我怎样才能使孩子窗口最顶层?
问题描述:
我有一个父窗体,里面有一些子窗口(不是窗体 - 只是窗口,例如标签控件)。在某些情况下,我希望将其中一个子窗口绘制在其他窗口的“上方”,以在整个主窗体上显示消息。我怎样才能使孩子窗口最顶层?
我试着在子窗口上设置HWND_TOPMOST和HWND_TOP,但它似乎没有任何效果。我做错了什么,或者HWND_TOPMOST和HWND_TOP只能用于表单,而不是表单中的控件?
谢谢。
答
HWND_TOPMOST只适用于顶层窗口,而不适用于子窗口。
使用带有HWND_TOP标志的SetWindowPos来更改目标子窗口的zorder,以将其置于其兄弟中的zorder顶部。
请注意,子窗口中的zorder仅适用于兄弟姐妹 - 与同一父母的hwnds。
答
当我想将滚动条控件放在所有子窗口的顶部时,我遇到了这个问题。
我的解决办法是:
- 使用WS_CLIPSIBLINGS到所有的子窗口。这可以防止重绘同级窗口的重叠区域。
- 使用hWndInsertAfter上带有HWND_TOP的SetWindowPos将其置于其他控件之上。