如何使子窗口位于最顶层?
Posted
技术标签:
【中文标题】如何使子窗口位于最顶层?【英文标题】:How can I make a child window topmost? 【发布时间】:2010-05-13 00:22:56 【问题描述】:我有一个父窗体,里面有一些子窗口(不是窗体 - 只是窗口,例如标签控件)。在某些情况下,我希望将其中一个子窗口绘制在其他窗口“上方”,以便在整个主窗体上显示一条消息。
我已经尝试在子窗口上设置 HWND_TOPMOST 和 HWND_TOP,但它似乎根本没有任何效果。我做错了什么,还是 HWND_TOPMOST 和 HWND_TOP 仅适用于表单,而不是表单中的控件?
谢谢。
【问题讨论】:
【参考方案1】:HWND_TOPMOST 仅适用于***窗口,不适用于子窗口。
使用带有 HWND_TOP 标志的 SetWindowPos 更改目标子窗口的 zorder 以将其置于其兄弟窗口的 zorder 顶部。
请注意,子窗口中的 zorder 仅适用于同级窗口 - 具有相同父级的 hwnd。
【讨论】:
【参考方案2】:当我想在所有子窗口的顶部放置一个滚动条控件时,我遇到了这个问题。
我的解决方案是:
-
对所有子窗口使用 WS_CLIPSIBLINGS。这可以防止重绘兄弟窗口的重叠区域。
在 hWndInsertAfter 上使用 SetWindowPos 和 HWND_TOP 将其置于其他控件之上。
【讨论】:
以上是关于如何使子窗口位于最顶层?的主要内容,如果未能解决你的问题,请参考以下文章