Форма мерцает при ресайзе

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Форма мерцает при ресайзе

Сообщение timsoft » 28.10.2004 (Чт) 13:29

В form_resize стоит у меня проверка на мин. ширину и мин. высоту
По достижению этого значения форма начинает мерцать.

Код такой

Код: Выделить всё
if me.width < 5000 then me.width = 5000
if me.height < 5000 then me.height = 5000
...


Я так понимаю, что происходит рекурсия.
Подскажите, как этого красиво избежать.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 28.10.2004 (Чт) 13:44

Если красиво, то надо ставить хук. Детали тут. Ставишь хук на форму, в обработчике ловишь WM_GETMINMAXINFO и в ней проверяешь размеры формы. Если есть локальный MSDN, то там есть и пример для VB.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 28.10.2004 (Чт) 13:51

Кстати, нашел более подходящий линк, вот:
http://support.microsoft.com/default.as ... -us;185733
Lasciate ogni speranza, voi ch'entrate.

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 28.10.2004 (Чт) 13:52

alibek, спасибо!

Пример нашел!

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 28.10.2004 (Чт) 14:18

разобрался, но не до конца
а как в Hook передать для каждой формы свой мин. размер?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.10.2004 (Чт) 14:59

По hwnd их различай.
А если хочешь в модуль класса перенаправить, то см. Subclasser в Проектах...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 28.10.2004 (Чт) 15:00

Либо для каждой формы определяй свой WindowProc.
Lasciate ogni speranza, voi ch'entrate.

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 28.10.2004 (Чт) 15:06

GSerg писал(а):По hwnd их различай.


типа minSize(hWND) = 500?
памяти отожрет два гига :-)
или коллекцию создавать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.10.2004 (Чт) 15:08

select case hwnd :)
Или коллекцию создавать.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 28.10.2004 (Чт) 15:12

GSerg писал(а):select case hwnd :)
Или коллекцию создавать.


точно! проще всего
Код: Выделить всё
select  case hwnd
  case frmMain.hwnd
    minsize = 500
  case frmSettings.hwnd
    minsize=900
  case else
    minsize = 230
end select


ща забацаю!
спасибо!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 2

    TopList