Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

WM_MouseWheel + MDI [D3, NT4]


PVOzerski ©   (2002-12-25 22:49:00) 

Сейчас занялся отлавливанием багов программы, которую скоро сдавать,
наткнулся на глючок, требующий для своей ликвидации поотлавливать
работу колесика мыши. Прога MDI. Для начала сделал методы-заглушки begin end,
повесил их на сообщение WM_MouseWheel - одну - parent"у, другое - child"у.
Поставил в них по breakpoint"у. Запустил, покрутил колесиком... Результат удручающ:
breakpoint в child"е не срабатывает никогда, а в parent"е - только когда нет видимых
child"ов. Где копать, как лечить - ??? :^( Может, кто сталкивался с подобным?


PVOzerski   (2002-12-26 13:13:00) [1]

Поделюсь собственным решением :^)

Перевел модальные диалоги в состояние "всегда верхнее") на этапе их onShow - диалоги открытия/закрытия файлов через
SetWindowPos(GetParent((Sender as tCommonDialog).handle),HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);

диалог выбора цвета - через
SetWindowPos((Sender as tCommonDialog).handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);

Так что кому надо - пользуйтесь.


PVOzerski   (2002-12-26 10:19:00) [2]

Не помогает... А глючок такой: если открыто модальное окно (скажем, диалог открытия файла), а мышь находится над моей формой, то при движении колесиком форма выскаивает на передний план, модальное окошко прячется за ним, и пользователь остается перед формой, не реагирующей ни на клаву, ни на кнопки мыши. Если он опытный, он доберется до модального окна через Alt+Tab или таскбар (естественно, матерясь), а если совсем ламер...
Может, кто с таким боролся, поделится рецептом?


Pat   (2002-12-26 00:57:00) [3]

Кажется сталкивался...
ApplicationEvents OnMessage:
if Msg.message=WM_MOUSEWHEEL then.....
Может быть поможет...


Наверх

Титульная страница Поиск, карта сайта Написать письмо