Active Form有一个启动方法,在方法中启动工作线程。
线程发送一个消息给Form,但是Form怎么样才能收到这个消息呢?我现在的做法是在线程创建的时候,把Form的句柄做为参数传递给工作线程,线程再向这个句柄发消息,但是却没有任何响应。如果是直接在窗体本身的方法里发送消息,就可以正常收到。请问是什么问题?var
FOwner : THandle;
procedure TDebugActiveX.FireThread;
var
Msg : TMessageThread;
begin
Msg := TMessageThread.Create(Self.Handle);
Sleep(10);
end;constructor TMessageThread.Create(AOwner: THandle);
begin
inherited Create(False); FOwner := AOwner;
FreeOnTerminate := true;
Sleep(10);
end;procedure TMessageThread.Execute;
begin
PostMessage(FOwner, EventMessage, 0, 0);
end;procedure TDebugActiveX.GetMessage(var Msg: TMessage);
begin
...... //处理 在窗体的这里收不到消息
end;
线程发送一个消息给Form,但是Form怎么样才能收到这个消息呢?我现在的做法是在线程创建的时候,把Form的句柄做为参数传递给工作线程,线程再向这个句柄发消息,但是却没有任何响应。如果是直接在窗体本身的方法里发送消息,就可以正常收到。请问是什么问题?var
FOwner : THandle;
procedure TDebugActiveX.FireThread;
var
Msg : TMessageThread;
begin
Msg := TMessageThread.Create(Self.Handle);
Sleep(10);
end;constructor TMessageThread.Create(AOwner: THandle);
begin
inherited Create(False); FOwner := AOwner;
FreeOnTerminate := true;
Sleep(10);
end;procedure TMessageThread.Execute;
begin
PostMessage(FOwner, EventMessage, 0, 0);
end;procedure TDebugActiveX.GetMessage(var Msg: TMessage);
begin
...... //处理 在窗体的这里收不到消息
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货