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

如何在Windows中组合GUI应用程序,windows,qt,winapi,user-interface,ipc,Windows,Qt,Winapi,User Interface,Ipc,我有一个使用Qt框架的Windows GUI应用程序(当前版本为3.3.5,可能会更改为Qt4) 我想在主应用程序中合并其他Windows GUI应用程序。我不能在主应用程序中直接使用小部件,因为有几个约束我无法控制。最终布局应如下所示: 目前,我使用的方法概述了一个。为了传递子应用程序的HWND,我在进程之间使用自己的IPC。然后,我需要使用在子窗口上调用::MoveWindow的QtresizeEvent转发调整大小事件 是否有更好或更通用的机制来实现这一点?有人建议我使用ActiveX,

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

我想在主应用程序中合并其他Windows GUI应用程序。我不能在主应用程序中直接使用小部件,因为有几个约束我无法控制。最终布局应如下所示:

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


是否有更好或更通用的机制来实现这一点?有人建议我使用ActiveX,但我对这项技术不太熟悉。

HWNDs是Win32 GUI最基本的构建块。除此之外,还需要托管应用程序的合作。e、 g.通过将父HWND发送到托管应用程序。

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

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

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


我怀疑“您无法控制的限制”会使几乎任何“正常”的实现变得不可能……

我已经添加了一些说明-我已经在使用托管应用程序的合作,但我仍然不喜欢这种方式。只是想对限制进行一些说明: