Форум: "WinAPI";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизФорма VCL и многопоточность... Найти похожие ветки
← →
Eraser © (2005-02-02 17:06) [0]Добрый день всем!
Хочу уточнить одну деталь.
Есть ли способ создать форму при помощи VCL в другом потоке, подозреваю что нету, но может у кого нибудь есть спец. компонент для этого (форма нужна чисто для приёма сообщений).
Уж очень не охота писать очередь сообщений.
← →
Reindeer Moss Eater © (2005-02-02 17:13) [1]Зачем форма для этого?
Окна не достаточно?
← →
Digitman © (2005-02-02 17:34) [2]
> Уж очень не охота писать очередь сообщений
ты и не напишешь ее.
ибо это - епархия системы.
а вот цикл ожидания/выборки/диспетчеризации/обработки сообщений из очереди - эт запросто.
и ничего там сложного нет.
var
Msg: TMsg;
..
while GetMessage(Msg, 0, 0, 0) do
if Msg.hWnd <> 0 then
begin
TranslateMessage(Msg);
Dispatchmessage(Msg);
end
else
Dispatch(Msg.Message);
← →
Eraser © (2005-02-02 18:16) [3]Reindeer Moss Eater ©
Как всегда я не правильно выразился! Конечно нужно создать просто окно.
Digitman ©
Наверное так и сделаю.
← →
Reindeer Moss Eater © (2005-02-02 18:31) [4]uses Classes;
type TWndMethod = procedure(var Message: TMessage) of object;
function AllocateHWnd(Method: TWndMethod): HWND;
← →
Набережных С. © (2005-02-02 19:29) [5]>Reindeer Moss Eater © (02.02.05 18:31) [4]
А что, AllocateHWnd потокобезопасна?
>Eraser © (02.02.05 18:16) [3]
Сообщения можно отправлять не только окну, но и непосредственно в очередь потока посредством PostThreadMessage.
← →
Eraser © (2005-02-02 20:17) [6]Набережных С. ©//
А как перехватить очередб потока?
← →
Набережных С. © (2005-02-02 20:32) [7]>Eraser © (02.02.05 20:17) [6]
См. Digitman © (02.02.05 17:34) [2]
Только параметр Msg.hWnd в этом случае будет равен нулю.
← →
Набережных С. © (2005-02-02 20:35) [8]Точнее нужно только вот это:
while GetMessage(Msg, 0, 0, 0) do
begin
здесь обработка сообщений
end;
← →
Набережных С. © (2005-02-02 20:37) [9]И когда поток получит WM_QUIT, GetMessage вернет false.
← →
Eraser © (2005-02-02 20:42) [10]Спасибо! Теперь всё понятно.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c