Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизКак получать и отправлять сообщение потоком Найти похожие ветки
← →
Senti (2005-02-11 17:24) [0]Не могу нигде найти инфу как в потоке отправить сообщение, потом в этом же потоке его получить и обработать :(
Отправлять вроде нашел как через PostThreadedMessage...
Если кто может напишите пример кода отправки и получения сообщения потоком.
Заранее всем спасибо...
← →
У (2005-02-11 17:39) [1]вопрос на засыпку: а в этом потоке
цикл выборки сообщений-то есть?
PeakMessage, TranslateMessage, DispatchMessage?
← →
Senti (2005-02-11 17:40) [2]Вот я и спрашиваю ! Как это сделать правильно...Такого цикла пока нет... Если не сложно приведи пример кода
← →
У (2005-02-11 17:43) [3]function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
Handled: Boolean;
begin
Result := False;
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
Result := True;
if Msg.Message <> WM_QUIT then
begin
Handled := False;
if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end
else
FTerminate := True;
end;
end;
← →
Senti (2005-02-11 17:56) [4]А как это перенести на Поток Thread ?
← →
У (2005-02-11 18:05) [5]Если поток не создает окна, то можно обойтись
совсем примитивным циклом вроде
procedure TMyThread.Execute;
begin
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
case Msg.Message of
WM_QUIT: Terminated := True;
WM_MY_MESSAGE_TO_MY_THREAD: DoSomething;
{...}
end;
end;
end;
← →
Senti (2005-02-11 18:11) [6]Во спасибо... А как отправить именно для этого потока сообщение и поймать имеено процедурой
например как в формеprivate
procedure Test(Msg: TMessage); message WM_SUPERUSER;
procedure Test(Msg : TMessage);
begin
// код....
end;
← →
У (2005-02-11 18:22) [7]procedure TMyThread.Execute;
var Msg: TMsg;
Message: TMessage;
begin
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
Message.Msg := Msg.Message;
Message.lParam := Msg.lParam;
Message.wParam := Msg.wParam;
case Msg.Message of
WM_QUIT: Terminated := True
else Dispatch(Message);
// направляется соотв методу TMyThread
end;
end;
end;
← →
Senti (2005-02-11 18:25) [8]Большое спасибо за помощь !!!!!!!!!
← →
Leonid Troyanovsky © (2005-02-11 21:09) [9]
> Senti (11.02.05 17:24)
> Не могу нигде найти инфу как в потоке отправить сообщение,
> потом в этом же потоке его получить и обработать :(
SleepEx, QueueUserAPC.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 2.858 c