Форум: "WinAPI";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];
ВнизВопрос про окно и разные потоки Найти похожие ветки
← →
Dmitry S © (2007-10-12 16:18) [0]У меня есть окно, которое обрабатывает, к примеру, сообщение WM_USER.
Этому окну с различных потоков посылается сообщение WM_USER.
В каком потоке будет работать моя оконная функция?
Правильно ли я понимаю, что в том, где выполняется следующее:
while GetMessage(Mmsg,0,0,0) do
begin
TranslateMessage(Mmsg);
DispatchMessage(Mmsg);
end;
А следовательно одновременно оконная функция в потоках выполняться не может.
← →
Anatoly Podgoretsky © (2007-10-12 16:34) [1]> Dmitry S (12.10.2007 16:18:00) [0]
В контексте потока окна.
← →
Leonid Troyanovsky © (2007-10-12 16:38) [2]
> Dmitry S © (12.10.07 16:18)
> А следовательно одновременно оконная функция в потоках выполняться
> не может.
Логично.
Поэтому, у потока есть не только очередь тех, которые Post,
но, и тех, которые Send, да и еще пара других.
Подробности см. у Джефа Рихтера.
--
Regards, LVT.
← →
Dmitry S © (2007-10-13 05:42) [3]Просто это сложно осознать, учитывая, что MessageBox, поставленный в коде оконной процедуры, не "замораживает" окно, хотя и приостанавливает выполнение оконной процедуры.
← →
Однокамушкин (2007-10-14 09:09) [4]
> Dmitry S © (13.10.07 05:42) [3]
> Просто это сложно осознать, учитывая, что MessageBox, поставленный
> в коде оконной процедуры, не "замораживает" окно, хотя и
> приостанавливает выполнение оконной процедуры.
MessageBox внутри себя имеет свой цикл с GetMessage и DispatchMessage, поэтому ваша оконная процедура получает управление, только рекурсивно: оконая процедура вызывает MessageBox, MessageBox - DispatchMessage, а DispatchMessage, при необходимости, - новую активацию вашей оконной процедуры
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c