delphi精英请进!

wen_zang 2001-07-21 12:54:23
我的函数:
function myfunc(s:integer;s1,s2:string):bool;stdcall;
begin
//省略。。。。。
end;

我用:CreateThread();产生一个线程,并调用我的函数:myfunc();

procedure TForm1.Button1Click(Sender: TObject);
var
hThread:Thandle;//定义一个句柄
ThreadID:DWord;
s:integer;
begin
hthread:=CreateThread(nil,0,@myfunc,nil,0,ThreadID);
if hThread=0 then
begin
messagebox(Handle,'Didn’t Create a Thread',nil,MB_OK);
exit;
end;

我要怎样才能传递三个参数(s,s1,s3)给我的函数mytfunc();
如何用三个参数替换hthread:=CreateThread(nil,0,@myfunc,nil,0,ThreadID)中的第二个nil。
...全文
81 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wen_zang 2001-07-21
  • 打赏
  • 举报
回复
ok!!!
yinmingke 2001-07-21
  • 打赏
  • 举报
回复
up
wljcr 2001-07-21
  • 打赏
  • 举报
回复
kook
Hillside 2001-07-21
  • 打赏
  • 举报
回复
这一个函数使用固定的32位参数变量,你可以这么做:
type
TMyParam=record
s:Integer;
s1,s2:String;
end;
PMyParam=^TMyParam;


function myfunc(Param:PMyParam):bool;stdcall;
begin
with Param^ do begin
//省略。。。。。
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
hThread:Thandle;//定义一个句柄
ThreadID:DWord;
s:integer;
threadparam:TMyParam;
begin
with threadparam do begin
s:=0;
s1:='test';
s2:='test';
end;
hthread:=CreateThread(nil,@threadparam,@myfunc,nil,0,ThreadID);
if hThread=0 then
begin
messagebox(Handle,'Didn’t Create a Thread',nil,MB_OK);
exit;
end;


wen_zang 2001-07-21
  • 打赏
  • 举报
回复
我知道TTHREAD类好用;我想知道上面的用法。。
猛禽 2001-07-21
  • 打赏
  • 举报
回复
啊?这么麻烦,TTHREAD类不是很好用吗?

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧