我在DLL中有一个Delphi表单(我知道这限制了DLL对Delphi的使用,但在这种情况下这不是问题).
DLL导出一个ShowForm
看起来大致如下的函数:
procedure ShowForm (App : TApplication);
begin
OldApp := Application;
try
Application := App;
MyForm := TMyForm.Create (nil);
try
MyForm.ShowModal;
finally
FreeAndNil (MyForm);
end;
finally
Application := OldApp;
end;
end;
Run Code Online (Sandbox Code Playgroud)
现在我在表格上使用了一个TAdvOfficeHint
(来自TMS组件包).不幸的是,这些提示没有显示出来.
我在这里错过了什么吗?如何使表单的行为完全像我从主应用程序中显示的那样?
谢谢!
我不知道,TAdvOfficeHint
但我想它Application.OnShowHint
设置了自己的钩子THintWindowClass
,即使主要的可执行文件和DLL都在TMS单元中链接,它们每个都有自己的类副本,这是出错的地方.
分配Application
是不够的:还有其他全局变量,比如Screen
,Mouse
等等.其他甚至隐藏在实现中,所以我说你有机会使表单的行为与主应用程序完全相同.
归档时间: |
|
查看次数: |
2702 次 |
最近记录: |