Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];

Вниз

Работаем с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
1-37732
Evgeny78
2003-12-30 11:33
2004.01.13
как сделать приложение видимым


6-37837
Кабан
2003-11-12 16:15
2004.01.13
CRC


14-37852
VEG
2003-12-22 22:12
2004.01.13
Самый быстрый алгоритм


1-37621
Reeves
2003-12-27 23:57
2004.01.13
Как поменять цвет шрифта у кнопки? При событии onmousemove?


6-37817
Sadya
2003-11-11 17:48
2004.01.13
Мне необходимо в цикле опросить по сокетам несколько машин





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский