Форум: "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.038 c