如何将窗口作为指针传递?

ss 2002-09-12 09:24:52
//创建线程
hThread:=CreateThread(nil,0,@ShowMsg,@Self,0,ThreadID);

//处理多线程
function ShowMsg(P:Pointer):Longint;stdcall;
begin
With TfrmMsg(P^) do begin //TfrmMsg是窗口类
Hide;
end;
Result:=1;
end;

上面的语句为何错误了?请高手指点。
...全文
58 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
copy_paste 2002-09-13
  • 打赏
  • 举报
回复

function ShowMsg(Param: Pointer): DWORD; stdcall;
var
S: string;
Form: TForm;
begin
Result := 0;
try
S := Format('Form1: %p, Param: %p', [Pointer(Form1), Param]);
Form := TForm(Param);
SetWindowText(Form.Handle, PChar(S));
Form.Hide;
Sleep(1000);
form.Show;
except
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Thread, ThreadID: THandle;
begin
Thread := CreateThread(nil, 0, @ShowMsg, Pointer(Self), CREATE_SUSPENDED, ThreadID);
ResumeThread(Thread);
CloseHandle(Thread);
end;
PeakChen 2002-09-13
  • 打赏
  • 举报
回复
up
smhpnuaa 2002-09-13
  • 打赏
  • 举报
回复
如果frmMsg窗口是动态创建就有问题!
smhpnuaa 2002-09-13
  • 打赏
  • 举报
回复
hThread:=CreateThread(nil,0,@ShowMsg,Self,0,ThreadID);

//处理多线程
function ShowMsg(P:Pointer):Longint;stdcall;
begin
With TfrmMsg(P^) do begin //TfrmMsg是窗口类
Hide;
end;
Result:=1;
end;
Dingobin 2002-09-12
  • 打赏
  • 举报
回复
写出错误提示
smhpnuaa 2002-09-12
  • 打赏
  • 举报
回复
看看!
smhpnuaa 2002-09-12
  • 打赏
  • 举报
回复
看看!
ss 2002-09-12
  • 打赏
  • 举报
回复
顶啊!
ss 2002-09-12
  • 打赏
  • 举报
回复
楼上的试过都不行!
blazingfire 2002-09-12
  • 打赏
  • 举报
回复
1)hThread:=CreateThread(nil,0,@ShowMsg,Self,0,ThreadID);//试试
2)TForm(P).Hide//试试
Michaelyfj 2002-09-12
  • 打赏
  • 举报
回复
function ShowMsg(P:Pointer):Longint;stdcall;
begin
With TForm(P^) as TfrmMsgdo begin //TfrmMsg是窗口类
Hide;
end;
Result:=1;
end;

试试

5,388

社区成员

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

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