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;

implementation

{$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传递多个参数的方法(利用结构体的参数指针)的主要内容,如果未能解决你的问题,请参考以下文章

CreateThread线程传递结构体参数

C++ CreateThread函数如何传递this指针作为参数

创建线程函数CreateThread的lpParameter参数怎么设置才能将在主线程中初始化的值传递给线程函数

DELPHI 线程怎样传递参数?

CreateThread

在类构造函数中将此指针传递给 CreateThread 在线程过程中表现得很奇怪