【发布时间】:2011-10-20 08:14:05
【问题描述】:
我正在 dll 中创建一个表单。没有包裹。使用导出的过程调用dll中的表单:
procedure ShowAbout(const AppHandle: THandle); stdcall;
var
aHandle: THandle;
form: TfrmAbout; / my form in some other unit in the dll
begin
aHandle:= Application.Handle;
Application.Handle:= AppHandle;
form :=TfrmAbout.Create(Application);
form.ShowModal;
form.Free;
Application.Handle:= aHandle;
end;
表格显示良好,没有问题。现在,我唯一想做的就是将定位表现为 poMainFormCenter(我希望它始终显示在主窗体(调用 dll 的窗体)上。
我尝试过使用表单 :=TfrmAbout.Create(Application.MainForm);等等,但没有运气。
有什么技巧可以帮助到这里吗?
【问题讨论】:
-
你应该传递
Application指针而不是仅仅传递窗口句柄。它很粗糙,但不幸的是不能以其他方式工作 -
绝对不要传递
Application指针。您不能将对象从 VCL 的一个实例传递到另一个实例。您需要为此使用运行时包。