windows - 如何在Windows中组合GUI应用程序

标签 windows qt winapi user-interface ipc

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

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

/image/RlK7T.png

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

是否有更好或更通用的机制可以做到这一点?有人建议我使用ActiveX,但我对这项技术还不够熟悉。

最佳答案

以下是一些 Windows 应用程序处理此问题的方法:

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

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

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

关于windows - 如何在Windows中组合GUI应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/312569/

相关文章:

c - 打开USB通讯

c++ - 在小部件和主窗口之间连接和传递数据

c++ - 无法访问静态元对象

c++ - WriteFile() 和 ReadFile() 异步不写入或读取

c++ - WM_PASTE Hook 不工作

c - FindFirstFile 和 Junctions

python - 如何检测到 stdio 被重定向到 nul?

C++ 电子邮件/SMTP

c++,usleep() 已过时,Windows/MingW 的解决方法?

unit-testing - Qt单元测试中使用qDebug