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

Вниз

Вопрос про окно и разные потоки   Найти похожие ветки 

 
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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.018 c
2-1212487305
AlekseyB
2008-06-03 14:01
2008.06.29
QReport


2-1212320387
alex-drob
2008-06-01 15:39
2008.06.29
Упаковать число в бинарную строку или аналог функции pack php


2-1212403782
ivan8511
2008-06-02 14:49
2008.06.29
Записать базу Paradox после каждого редактирования


2-1212430785
S@shka
2008-06-02 22:19
2008.06.29
Как реализуется подобная вещь...


2-1212143583
Сергей
2008-05-30 14:33
2008.06.29
Как описать процедуру чтобы использовать ее в нескольких модулях?