2

我有一个使用 Qt 框架的 Windows GUI 应用程序(当前版本为 3.3.5,可能会更改为 Qt4)。

我想在主应用程序中组合其他 Windows GUI 应用程序。由于一些我无法控制的约束,我无法直接在主应用程序中使用这些小部件。最终布局应如下所示:

http://i.stack.imgur.com/RlK7T.png

目前我正在使用Hosting .exe applications into a dialog中概述的方法。为了传递HWND子应用程序,我在进程之间使用我自己的 IPC。然后,我需要使用resizeEvent调用::MoveWindow子窗口的 Qt 转发调整大小事件。

是否有更好或更通用的机制来执行此操作?有人建议我使用 ActiveX,但我对这项技术还不够熟悉。

4

2 回答 2

4

以下是一些 Windows 应用程序如何处理此问题:

如果小部件应用程序必须在它自己的 EXE 中,那么您可以使用 OLE 文档对象嵌入(我认为这是正确的术语)。这与用于将实时 Excel 文档嵌入 Word 文档的技术相同。基本上,类似 WMF 的数据用于跨进程呈现 UI。这需要在主机程序和小部件程序中进行大量工作,除非您在此基础上构建的框架自动支持这一点。MFC 在这方面做得很好......(伙计,我只是在赞美 MFC 吗??)

更好的解决方案是使用某种类型的进程内解决方案。让所有小部件都是 DLL。这就是 ActiveX 的工作原理。如果小部件需要耗尽进程,请将渲染和进程外的东西分成两部分。一个执行进程外工作并在托管进程中本地执行渲染的 EXE。使用某种类型的 IPC 将它们粘合在一起。

我怀疑“你无法控制的限制”将使几乎任何“理智”的实施都变得不可能......

于 2008-11-24T16:47:01.520 回答
1

HWND 是 Win32 GUI 最基本的构建块。除此之外的任何事情都需要托管应用程序的合作。例如,通过将父 HWND 发送到托管应用程序。

于 2008-11-23T19:02:43.743 回答