Главная страница
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.056 c
4-29681
BarlaZ
2003-12-08 07:30
2004.02.10
Как сделать ScreenShot главной формы моего приложения?


14-29573
Undert
2004-01-20 00:31
2004.02.10
Работа в Питере!


3-29257
The X
2004-01-13 15:52
2004.02.10
Itnvalid variant type conversion


8-29481
Darlock
2003-10-06 12:12
2004.02.10
Графический формат EPS


1-29340
_юзер_
2004-01-29 14:31
2004.02.10
COM