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

Вниз

Кто ждет результата SendMessage с WM_CopyData?   Найти похожие ветки 

 
Aleksandr.   (2005-01-28 17:28) [0]

В смысле, нить, который его посылает, или основная нить программы?
А то захотелось мне для большей надежности узнать, каков результат отправленного сообщения, но увидел я, что посылающее окно становится недоступным во время ожидания результата. Вот и думаю, есть ли смысл отдельные потоки для отсылок WM_CopyData выделять, тем более, что слаб я в тематике, как там в Execute всякие PeekMessage или что там обрабатывать. И, кстати, в какой момент обработки получателем результат сообщения возвращается назад? Когда получатель делает

Boolean(Msg.Result):=true

?


 
Digitman ©   (2005-01-28 17:32) [1]


> Кто ждет результата SendMessage с WM_CopyData?


я. жду. иногда. представь себе.


> В смысле, нить, который его посылает, или основная нить
> программы?


"В смысле" нить, которой адресовано сообщение.
Либо "В смысле" окно, которому адресовано сообщение, которое создано конкретной нитью и БЕЗ которой сие окно НЕ имеет право на существование.


 
Aleksandr.   (2005-01-28 17:46) [2]

Digitman © :

Объясните мне, каким образом окно-получатель вдруг да станет ждать результата получаемого сообщения? Это ведь в отправителе вызывается
 if Boolean(SendMessage(rHandle,WM_CopyData,Handle,LParam(@CSD)))


 
Digitman ©   (2005-01-28 18:40) [3]


> каким образом окно-получатель вдруг да станет ждать результата
> получаемого сообщения?


никаким.

нет никаких "окон-получателей".

Есть трэды, создавшие окна, которые являются потенциальными адресатами отправляемых им сообщений.

Каждый трэд волен/обязан свою собственную очередь сообщений.

За ожидание/выборку/диспетчеризацию/обработку ВСЕХ сообщений, адресованных либо трэду, либо окнам им созданным, ответсвенен сам трэд.

Очередь сообщений  самому трэду  и окнам, им созданным, едина, отдельна для него и ассоциирована именно с ДАННЫМ трэдом.

Очередей трэд-сообщений в системе существует не более чем самих трэдов.

Каждый отдельный трэд может иметь, а может и не иметь свою индивидуальную очередь сообщений.

Как только трэд выполнил хотя бы однократно CreateWindow{Ex}, система создает и ассоциирует с дан.трэдом индивидуальную очередь сообщений.

Та же самая очередь сообщений создается системой и ассоциируется с дан.тредом как только последний выполнит любую из ф-ций, обращающихся к этой очереди (Peekmessage, WaitMessage, GetMessage и т.п.)

За ожидание/выборку/диспетчеризацию/обработку сообщений из своей же очереди ответственен сам трэд - владелец очереди. за него это никто не сделает.

Если в поле адресата сообщения hWnd <> 0, то трэд волен или обязан выполнить как минимум DispatchMessage(), что приведет к непоср.передаче упр-я оконной ф-ци того окна, которому адресовано сообщение. В противном случае трэд волен интерпретировать сообщение как ему вздумается.



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

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

Наверх




Память: 0.48 MB
Время: 0.029 c
14-1108990234
Calm
2005-02-21 15:50
2005.03.13
Использует ли кто-нибудь вас UML ?


14-1108800748
_lam
2005-02-19 11:12
2005.03.13
vcl.h


1-1109567093
Andrey V.
2005-02-28 08:04
2005.03.13
Событие при переходе по строкам в Gride


1-1109230829
3APA3A
2005-02-24 10:40
2005.03.13
Combobox


1-1109423831
Генри
2005-02-26 16:17
2005.03.13
Правильная растановка символов