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

Вниз

Кто ждет результата 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.031 c
4-1107077312
rimd
2005-01-30 12:28
2005.03.13
CreateThread-совместное использование кода


14-1108294034
QuasiLamo
2005-02-13 14:27
2005.03.13
Обновление окна и рабочего стола


3-1108127226
Max Zyuzin
2005-02-11 16:07
2005.03.13
Посоветуйте чем лучше состыковывать Delphi 7 и MSSQL


6-1105038683
Ancot
2005-01-06 22:11
2005.03.13
Обнова через I-Net


14-1109053646
Vlad Oshin
2005-02-22 09:27
2005.03.13
http://rapira.ru/articles/article0423.htm





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский