CreateThread传递多个参数的方法(利用结构体的参数指针)
Posted 朝闻道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CreateThread传递多个参数的方法(利用结构体的参数指针)相关的知识,希望对你有一定的参考价值。
很多朋友一直都在问CreateThread如何传递多个参数,CreateThread传递参数的方式是指针传递的,所以这里也可以利用指针来做!Demo 关键代码如下:
type
TfrmTestThread = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
PParData = ^TParData;
TParData = record
Count: Integer;
TestStr: string[100];
end;
var
frmTestThread: TfrmTestThread;
{$R *.dfm}
function TestThread(AParData: PParData): Boolean; stdcall;
var
I: Integer;
DC: HDC;
TestStr: string;
begin
DC := GetDC(frmTestThread.Handle);
SetBkColor(DC, GetSysColor(COLOR_BTNHIGHLIGHT));
for I := 1 to AParData.Count do
begin
TestStr := AParData.TestStr + IntToStr(I);
TextOut(DC, 10, 10, PChar(TestStr), Length(TestStr));
end;
ReleaseDC(frmTestThread.Handle, DC);
end;
procedure TfrmTestThread.Button1Click(Sender: TObject);
var
hThread: THandle;
ThreadID: DWord;
vParData: PParData;
begin
new(vParData);
vParData.Count := 10000;
vParData.TestStr := \'多线程测试\';
hThread := CreateThread(nil, 0, @TestThread, vParData, 0, ThreadID);
if hThread = 0 then
MessageBox(Handle, \'创建失败!\', nil, MB_OK);
end;
end.
http://www.xuedelphi.cn/article/html2010/2010091922162863.html
http://www.cnblogs.com/azhqiang/p/3957312.html
以上是关于CreateThread传递多个参数的方法(利用结构体的参数指针)的主要内容,如果未能解决你的问题,请参考以下文章
C++ CreateThread函数如何传递this指针作为参数