【问题标题】:How do I host an application window as a child of a window belonging to another process?如何将应用程序窗口作为属于另一个进程的窗口的子窗口托管?
【发布时间】:2009-02-06 20:54:40
【问题描述】:
我想将来自进程“A”的应用程序窗口托管到进程“B”的主窗口中,就像“A”的窗口是 MDI 子窗口一样。这在 Windows 中可能吗?还是有一些技巧可以让我伪造这个?
顺便说一句,当“A”的窗口嵌入到“B”的窗口中时,我想删除它的标题栏(或者更好的是,所有非客户端的东西)。我想这必须通过调整窗口样式或窗口类来实现,但我绝不是这些 Win32 错综复杂的专家。
【问题讨论】:
标签:
windows
hosting
embedding
reparenting
【解决方案1】:
可以托管窗口。通过调用 SetParent 函数来更改 A 的父 HWND。要更改窗口样式,您需要使用 GetWindowLong/SetWindowLong 对来更改要使用的属性。
如果这是第三方应用程序(即,不是您的应用程序),那么您可能会遇到麻烦,尤其是当窗口对其窗口进行任何主题化或任何自定义操作时(例如,更改拖动区域等)。