![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Форма VCL и многопоточность... [D7, WinXP]
Eraser © (2005-02-02 17:06:00)Добрый день всем!
Хочу уточнить одну деталь.
Есть ли способ создать форму при помощи VCL в другом потоке, подозреваю что нету, но может у кого нибудь есть спец. компонент для этого (форма нужна чисто для приёма сообщений).
Уж очень не охота писать очередь сообщений.
Eraser (2005-02-02 20:42:00) [1]Спасибо! Теперь всё понятно.
Набережных С. (2005-02-02 20:37:00) [2]И когда поток получит WM_QUIT, GetMessage вернет false.
Набережных С. (2005-02-02 20:35:00) [3]Точнее нужно только вот это:
while GetMessage(Msg, 0, 0, 0) do
begin
здесь обработка сообщений
end;
Набережных С. (2005-02-02 20:32:00) [4]>Eraser © (02.02.05 20:17) [6]
См. Digitman © (02.02.05 17:34) [2]
Только параметр Msg.hWnd в этом случае будет равен нулю.
Eraser (2005-02-02 20:17:00) [5]Набережных С. ©//
А как перехватить очередб потока?
Набережных С. (2005-02-02 19:29:00) [6]>Reindeer Moss Eater © (02.02.05 18:31) [4]
А что, AllocateHWnd потокобезопасна?
>Eraser © (02.02.05 18:16) [3]
Сообщения можно отправлять не только окну, но и непосредственно в очередь потока посредством PostThreadMessage.
Reindeer Moss Eater (2005-02-02 18:31:00) [7]uses Classes;
type TWndMethod = procedure(var Message: TMessage) of object;
function AllocateHWnd(Method: TWndMethod): HWND;
Eraser (2005-02-02 18:16:00) [8]Reindeer Moss Eater ©
Как всегда я не правильно выразился! Конечно нужно создать просто окно.
Digitman ©
Наверное так и сделаю.
Digitman (2005-02-02 17:34:00) [9]
> Уж очень не охота писать очередь сообщений
ты и не напишешь ее.
ибо это - епархия системы.
а вот цикл ожидания/выборки/диспетчеризации/обработки сообщений из очереди - эт запросто.
и ничего там сложного нет.
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);
Reindeer Moss Eater (2005-02-02 17:13:00) [10]Зачем форма для этого?
Окна не достаточно?