Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.10;
Скачать: CL | DM;

Вниз

Поведение модальности   Найти похожие ветки 

 
Кладов   (2003-05-28 22:44) [0]

Если кто умеет пользоваться всякими там spy, control spy... то может скажет, какое сообщение приходит и какому окну, когда мы щелкаем мышой по запрещенному окну в тот момент, когда наше приложение неактивно. В контексте модальности: модальная форма закрыта другим окном (или не закрыта, не суть важно), но мы щелкаем по другому окну, которое в этот момент запрещено. В VCL бип раздается только если приложение уже активно. Если приложение неактивно, то без всякого бипа активируется окно модальной формы. В KOL так получается только если не используется аплет и щелчок сделан по главной форме, которая выполняет его роль. Не могу добиться, чтобы работало как в VCL при наличии аплета. Простейший эксперимент показывает, что в нормальном режиме, когда есть TKOLApplet, при щелчке на запрещенном окне никакое сообщение вообще (вроде бы) не поступает ни аплету, ни щелкнутой форме. Как же тогда VCL-приложение ловит этот щелчок? Или не ловит, но как-то обрабатывает.


 
SPeller ©   (2003-05-29 11:04) [1]

У меня получалась как-то "правильная" модальность если показывать модальное окно руками, и ставить главному Disbled через SendMessage( WM_ENABLED );


 
Кладов   (2003-05-29 17:52) [2]

Если послать WM_ENABLE, состояние окна не меняется, и его можно по-прежнму активировать мышкой. Если использовать EnableWindow( Form.Handle ), то эффект тот же, что и раньше: при наличии Applet всегда бип и модальная форма не активируется.


 
SPeller ©   (2003-05-29 18:46) [3]


> Кладов (29.05.03 17:52)
> Если послать WM_ENABLE, состояние окна не меняется, и его
> можно по-прежнму активировать мышкой. Если использовать
> EnableWindow( Form.Handle ), то эффект тот же, что и раньше:
> при наличии Applet всегда бип и модальная форма не активируется.

EnableWindow - это оболочка для WM_ENABLE:

If the enabled state of a window is changing, a WM_ENABLE message is sent before the EnableWindow function returns. If a window is already disabled, all its child windows are implicitly disabled, although they are not sent a WM_ENABLE message.

Так что, не может WM_ENABLE не работать, если работает EnableWindow. Или я ошибаюсь?


 
Кладов   (2003-05-29 19:25) [4]


> EnableWindow - это оболочка для WM_ENABLE

Наоборот - WM_ENABLE посылается окну, когда работает EnableWindow, но всю работу делает именно EnableWindow. Я проверил.



Страницы: 1 вся ветка

Текущий архив: 2004.02.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
3-29260
Korenb Grif
2004-01-17 19:32
2004.02.10
Dbgrid илил table


3-29231
guest_Dmitry
2004-01-19 16:15
2004.02.10
Формат поля numeric


1-29450
VID
2004-02-02 00:10
2004.02.10
Как показать любую строку RichEdit как первую ?


1-29462
Shaman
2004-01-30 15:24
2004.02.10
Как программно создать кнопку и разместить ее на форме


1-29446
frost
2004-01-30 11:42
2004.02.10
Отрисовка TreeNode на TreeView.