Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Уменьшение окна - минимум Добавлено: 13.09.04 18:14  

Автор вопроса:  Calhoon | Web-сайт: 4elovekssn.blog.ru | ICQ: 789764 
Надо сделать так, чтоб при уменьшении окна оно уменьшалось только до определенных размеров, дальше - никак. Кто поможет?

Ответить

  Ответы Всего ответов: 21  

Номер ответа: 1
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #1 Добавлено: 13.09.04 18:26
Ну и в чем проблема?

Private Sub Form_Resize()
If Width < 600 Then Width = 600
End Sub

И так же с Height

Ответить

Номер ответа: 2
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #2 Добавлено: 13.09.04 18:43
Ответ №1 будет провоцировать ошибку при WindowState vbMaximized и vbMinimized. Чтобы избежать ошибки сделай так:

Private Sub Form_Resize()
    MinWidth = 4000
    MinHeight = 3000
    If Me.WindowState = vbNormal Then
        If Me.Width < MinWidth Then Me.Width = MinWidth
        If Me.Height < MinHeight Then Me.Height = MinHeight
    End If
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 13.09.04 21:49
Ответ номер 1 и 2 будут мигать... Поэтому самым лучшим остается сабклассинг окна с чем-нибудь подобным WM_SIZING...

Ответить

Номер ответа: 4
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 14.09.04 00:08
Если в CallBack'e обрабатывать WM_SIZING традиционным способом (GetWindowRect+MoveWindow) то мигать будет ещё больше, Если правильным путём (CopyMemory + lParam), то получить указатель на структуру RECT ещё надо умудриться. Во всяком случае, я не смог скопировать данные с адреса в lParam.
CopyMemory VarPtr(R), lParam, 16
CopyMemory R, lParam, 16
- оба варианта не работают, не знаю в чём дело.

А надо ещё и обратно передать данные :(((

Так что на данный момент Me.Width = MinWidth наилучший вариант. ...Увы, здесь вам не asm :( Там нет таких заморочек с CopyMemory

Ответить

Номер ответа: 5
Автор ответа:
 Last_Santa



ICQ: 200700724 

Вопросов: 38
Ответов: 329
 Web-сайт: localhost
 Профиль | | #5
Добавлено: 14.09.04 07:28
Вот без морганий:
http://vbaccelerator.com/home/VB/Code/Libraries/Subclassing/Sophisticated_Control_Over_Window_Sizing_and_Moving/article.asp

Ответить

Номер ответа: 6
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #6 Добавлено: 14.09.04 14:26
Потому и не моргает, что окно в процессе Drag не ресайзится, просто рисуется прямоугольник выделения. Видимо, потому, что не получается нормально ресайзить непосредственно форму. А-ля Win 95. Да и ActiveX ещё в добавок ко всему.

Ответить

Номер ответа: 7
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #7 Добавлено: 14.09.04 15:04
А что-нить без SSubTimer'a можно?

Ответить

Номер ответа: 8
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #8 Добавлено: 14.09.04 15:37
Можно, работает супер, никаких морганий!!!
Вот только как перевести на VB

    .elseif uMsg==WM_SIZING
        mov edx,lParam
        mov eax, [edx.RECT].left
        mov ebx, [edx.RECT].right
        sub ebx, eax
        cmp ebx, 300
        jnl @F
            add eax,300
            mov [edx.RECT].right,eax
        @@:
        mov eax, [edx.RECT].top
        mov ebx, [edx.RECT].bottom
        sub ebx, eax
        cmp ebx, 200
        jnl @F
            add eax,200
            mov [edx.RECT].bottom,eax
        @@:
        return 0

Может как dll оформить, и в ней кусочек CallBack процедуры обрабатывать?

Ответить

Номер ответа: 9
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #9
Добавлено: 14.09.04 15:56
запросто... просто не вызывать оконный CallWindowProc и возвращать ноль... в этом случае все будет ок :)

Ответить

Номер ответа: 10
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #10 Добавлено: 14.09.04 16:35
Только вот кому это надо???
Или поковыряться?

Ответить

Номер ответа: 11
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #11 Добавлено: 14.09.04 16:58
мне. вот был хорощий исходник на octal.narod.ru, но его удалили с хоста... :((

Ответить

Номер ответа: 12
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #12 Добавлено: 14.09.04 16:59
я имею ввиду сайт удалили

Ответить

Номер ответа: 13
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #13 Добавлено: 14.09.04 17:10
Calhoon, ну-ка говори, нафига стырил название моего редактора и присвоил его своему? Я об Easy Note. НАПИШИ!!!!

Ответить

Номер ответа: 14
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #14 Добавлено: 14.09.04 18:25
Александр, тебе ещё нужно?

В комплекте маленькая dll (2.5 кб), нормальная, не ActivX. Регистрировать не надо, просто рядом с программой либо в системную папку положить.

Никаких мерцаний. :)

Ответить

Номер ответа: 15
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #15 Добавлено: 14.09.04 18:41
http://www.vbcodemagician.dk/tips/forms_resize.htm

Вроде ничё не мерцает...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам