线程中消息发送例子(100分)

  • 主题发起人 bingyu004
  • 开始时间
B

bingyu004

Unregistered / Unconfirmed
GUEST, unregistred user!
需要一些例子理解线程,消息。
十分 感谢
 
把指针传到线程中,SENDMESSAGE,就可以了。
这个论坛,这类问题也有很多了。可以看看以前的帖子
http://www.delphibbs.com/keylife/iblog_show.asp?xid=4786
 
应该是将需要接收消息的控件的句柄传给线程
线程可以通过postmessage或sendmessage函数发送入队或非入队消息
 
要通俗一点的
 
越俗的越贵
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const ClearMessage= WM_USER+1;
type
TForm1 = class(TForm)
edt1: TEdit;
btn1: TButton;
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
procedure ClearEdit(var Message: TMessage);
message ClearMessage;
{ Public declarations }
end;

ThdSendMessage= class(TThread)
private
Fhandle:THandle;
public
procedure Execute;override;
constructor create(Ahandle:THandle);
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
edt1.Text:=btn1.Caption;
end;

{ ThdSendMessage }
constructor ThdSendMessage.create(Ahandle: THandle);
begin
inherited create(False);
Fhandle:= Ahandle;
FreeOnTerminate:= True;
end;

procedure ThdSendMessage.Execute;
begin
inherited;
//发送清除消息
SendMessage(Fhandle,ClearMessage,Fhandle,0) ;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
ThdSendMessage.create(Self.Handle);

end;

procedure TForm1.ClearEdit(var Message: TMessage);
begin
inherited;
if Message.Msg= ClearMessage then
edt1.Text:='';
end;

end.
 
顶部