windows - 一个窗口可以总是在另一个窗口之上吗?

标签 windows winapi

在 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/

相关文章:

c++ - 使用IE引擎下载页面+使用POST

c# - .NET 跟踪日志查看器

c++ - WaitForSingleObject() 和 SetEvent() 函数之间同步的算法?

c# - 监控windows访问的文件

c++ - 使用 WINAPI ReadConsole

c++ - 楼主绘制的任务栏缩略图预览

c# - Windows Phone 将数据保存到文件

Windows 10 信息亭模式,没有可用的应用程序

windows - 在工作组计算机上测试 Windows AD 集成

windows - 为什么弹出窗口上的图标和按钮有时看起来不一样?