1,184
社区成员
发帖
与我相关
我的任务
分享
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
procedure My(var m:TMessage);message WM_My;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.My(var m:TMessage);//message WM_My;
var pp:PMyRec;
begin
if m.WParam=0 then
begin
pp:=PMyRec(m.LParam);
// Memo1.Lines.Add(inttostr(pp.i));
FreeMem(pp,sizeof(TMyRec));
end
else if m.WParam=1 then
begin
Memo1.Lines.Add('TABthread finish .');
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var j:HWND;
begin
TABthread.Create(form1.Handle);
end;
end.
unit ABThreadU;
interface
uses
Classes, Messages, Windows;
Const
WM_My=WM_USER+1000;
type
TMyRec=record
i:integer;
end;
PMyRec=^TMyRec;
TABthread = class(TThread)
private
FWnd:HWND;
{ Private declarations }
protected
procedure Execute; override;
public
constructor Create(H:HWND);
end;
implementation
constructor TABthread.Create(H:HWND);
begin
inherited Create(true);
FWnd:=H;
self.Resume;
end;
procedure TABthread.Execute;
var pp:PMyRec;
i:integer;
begin
for i:=1 to 20000 do
begin
GetMem(pp,sizeof(TMyRec));
pp.i:=i;
PostMessage(FWnd,WM_My,0,integer(pp));
end;
PostMessage(FWnd,WM_My,1,0);
end;
end.