3

我需要将辅助应用程序的用户界面 (UI) 嵌入到主应用程序中。我可以使用 SetParent 轻松地将辅助应用程序主窗体托管到主应用程序中。我正在使用命名管道在两个应用程序之间进行通信。借助主应用程序中的虚拟 TEdit,我什至可以在辅助应用程序中使用 AttachThreadInput API 解决选项卡问题。到现在为止还挺好。

我无法解决以下问题:辅助应用程序中的任何模式形式都不会被视为主要应用程序的模式,这会造成很大的麻烦。

顺便说一句:不要告诉我使用 DLL、OCX 或 ActiveX。我有两个普通的 exe 文件。

任何帮助/提示表示赞赏。

4

1 回答 1

5

模态形式的工作方式如下:

  1. 当显示模态表单时,它会禁用其所有者 window
  2. 这具有使与所有者的交互变得不可能的效果。
  3. 当模态窗口关闭时,它会重新启用所有者。

但是在您的场景中,辅助应用程序中的模态窗口不会禁用主应用程序中的窗口。因此,要解决您的问题,您需要确保您的辅助应用程序可以访问主应用程序并在显示模式表单时禁用相应的窗口。

模态是一个有点棘手的领域。各种不良后果很容易出错。至少需要 10 个版本的 VCL 才能使模式和窗口所有者的处理接近正确!Raymond Chen 写了一篇非常严肃的关于模态的文章,我相信你会发现它们很有用:

于 2013-04-01T17:27:57.600 回答