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

Вниз

Работаем с ApplicationEvents.OnMessage   Найти похожие ветки 

 
VID ©   (2003-12-21 19:17) [0]

Допустим моё приложение получает сообщение WM_USER+560, и получение этого сообщение, обрабатывается в указанном обработчике (if msg.message = wm_user+560 then begin ... end;).

вопрос, как сделать так что бы дальше этого обработчика событие уже не пошло, т.е. что бы во-первых в моей программе никто и ничто не отреагировало на него (handled := true ?), и во-вторых, что бы вообще никакая другая программа загруженная на этот момент в озу, не получила бы это сообщение (CancelDispatch ?) ?


 
VID ©   (2003-12-21 19:21) [1]

Удалено модератором
Примечание: Флуд


 
Nikolay M. ©   (2003-12-21 21:37) [2]

Второй параметр сообщения (Handled) о чем-нибудь говорит?


 
VID ©   (2003-12-21 21:48) [3]

Удалено модератором
Примечание: Флуд


 
GEN++ ©   (2003-12-21 22:09) [4]

>и во-вторых, что бы вообще никакая другая программа загруженная >на этот момент в озу, не получила бы это сообщение >
>(CancelDispatch ?) ?

Посылайте сообщение WM_USER+560 адресно, только Вашему окну.


 
Nikolay M. ©   (2003-12-21 22:16) [5]


> {кстати, неплохо иногда читать то что пишут в скобках}

Да, проморгал, каюсь :?) А если знаешь ответ, зачем спрашиваешь?


> что бы вообще никакая другая программа загруженная на этот
> момент в озу, не получила бы это сообщение

Как ты себе это представляешь? Допустим, рашил я сделать два SendMessage-а программам calc.exe и winamp.exe и что мне помешает это сделать?
В принципе можно повесить хук на SendMessage и PostMessage и отследить, какому окну отсылается данное сообщение, но не думаю, что это того стОит. Сказал бы хоть, что делаешь.


 
VID ©   (2003-12-21 22:26) [6]

Да ничего особенного я такого не делаю, просто меня сбивает с толку, а вернее я не понимаю, что значит вот эта заметка в дельфовом хелпе по сабжу:

Note: Call the CancelDispatch method from an OnMessage event handler to prevent the application from forwarding the event to any other application events objects.

Как это понять(перевести) ?

>GEN++ © (21.12.03 22:09) [4]
Я отсылаю сообщение своей проге при помощи PostMessage(Application.Handle....); т.е. прога сама себе щлёт сообщение - да просто я таким образом убиваю динамически создаваемый таймер, иначеж как его убъёшь когда он не нужен становится...


 
GEN++ ©   (2003-12-22 01:16) [7]

Что касается прибития таким образом TTimer - все логично, но что касаеися "распространения"
PostMessage/SendMessage по памяти, то мне представляется это так:
PostMessage регистрирует Ваше сообщение в таблице (очереди) сообшений ОС сопровождая его номером
процесса (хэндла) к которому оно адресовано.
ОС в свою очередь, в очередной квант времени предназначенный для передачи сообщений
дергает(вызывает) соответствующую стандартную процедуру обработки в приложении, которому
оно адресовано. Если Вы в своем приложении не перекрываете этоn обработчик своим,
то прием сообщения заканчивается "ничем" и никакого движения дальше вроде бы быть не должно.
Я конечно не претендую на абсолютную точность моих рассуждений.


 
KSergey ©   (2003-12-22 08:09) [8]

Толь не "ОС ... в очередной квант времени предназначенный для передачи сообщений", а сама программа, когда она готова обработать сообщения из очереди, обращается к ф-ции API GetMessage(), выход из которой означает, что на верху (или внизу? ;) очереди этого приложения есть необработанное сообщение, которое и возвращается. А дальше уже приложение его как умеет обрабатывет (стандартно - вызывает API ф-цию DispatchMessage(Msg)).



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
14-37905
Wistler
2003-12-21 12:59
2004.01.13
Оптимальные деревья


6-37839
jazz
2003-11-13 13:59
2004.01.13
Как открыть нужный мне каталог через Explorer


11-37590
Сызганов Н.А.
2003-04-22 10:21
2004.01.13
Вопрос по внедрению КОЛ-компонентов в VCL-проекты на Delphi


3-37576
www
2003-12-11 11:53
2004.01.13
Не заполняется DBComboBox


1-37731
DL`
2003-12-30 13:13
2004.01.13
узнать, что в региональных настройках...