在子线程中向主窗体发送自定义消息,主窗体总是收不到该消息,简化代码如下,请高手帮忙
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;Const
WM_MINE=WM_USER+100;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
procedure Mine(var msg:TMSG);message WM_MINE;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}function MyThreadFun(handle: HWND): Integer; stdcall;
var
i:integer;
begin
Sendmessage(handle,WM_MINE,0,0);
Result := 0;
end;procedure TForm1.Button1Click(Sender: TObject);
var
handle: HWND;
thid: THandle;
begin
handle := FindWindow('TForm1', 'Form1');
CreateThread(nil, 0, @MyThreadFun, @handle, 0, thid);
end;procedure TForm1.Mine(var msg: TMSG);
begin
edit1.Text :='asdfsad';
Showmessage('OK');
end;
end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;Const
WM_MINE=WM_USER+100;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
procedure Mine(var msg:TMSG);message WM_MINE;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}function MyThreadFun(handle: HWND): Integer; stdcall;
var
i:integer;
begin
Sendmessage(handle,WM_MINE,0,0);
Result := 0;
end;procedure TForm1.Button1Click(Sender: TObject);
var
handle: HWND;
thid: THandle;
begin
handle := FindWindow('TForm1', 'Form1');
CreateThread(nil, 0, @MyThreadFun, @handle, 0, thid);
end;procedure TForm1.Mine(var msg: TMSG);
begin
edit1.Text :='asdfsad';
Showmessage('OK');
end;
end.
@handle改为self.handle