Delphi - DLL中的表单 - 提示未显示

jpf*_*ius 3 delphi dll

我在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组件包).不幸的是,这些提示没有显示出来.

我在这里错过了什么吗?如何使表单的行为完全像我从主应用程序中显示的那样?

谢谢!

Ond*_*lle 5

我不知道,TAdvOfficeHint但我想它Application.OnShowHint设置了自己的钩子THintWindowClass,即使主要的可执行文件和DLL都在TMS单元中链接,它们每个都有自己的类副本,这是出错的地方.

分配Application是不够的:还有其他全局变量,比如Screen,Mouse等等.其他甚至隐藏在实现中,所以我说你有机会使表单的行为与主应用程序完全相同.