在 Windows 中,是否可以将窗口 A 设置为始终位于窗口 B 之上,同时允许其他窗口正常工作并在激活时显示在两者之上。
换句话说,我想要两个窗口之间的父子关系。这可以在不使窗口 A 成为窗口 B 的子窗口(MDI 样式)的情况下完成吗?窗口 B 不是我的 (Internet Explorer),当我尝试使用 SetParent
实现此目的时,我的对话框 A 的图形搞砸了。
我想我已经用来自 MSDN forum post 的想法破解了它,但是窗口 A 仍然始终位于所有内容之上,而不仅仅是窗口 B。
// Place window A on top
SetWindowPos(hWndWindow, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
// Place window B underneath it
SetWindowPos(hWndParent, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
这可能吗?
最佳答案
创建所有权关系不会成功吗?
SetWindowLong(hwndChild, GWL_HWNDPARENT, hwndOwner)
窗口可以在不同的进程中,您可以从任何进程调用它。这将确保子窗口始终位于所有者窗口之上。这与实际创建父/子关系的 SetParent 不同。 Read through this article (它来自 1993 年,但仍然基本正确)以了解所有权和养育子女之间的区别。
关于windows - 一个窗口可以总是在另一个窗口之上吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812686/