2010-05-13 75 views
1

我有一个父窗体,里面有一些子窗口(不是窗体 - 只是窗口,例如标签控件)。在某些情况下,我希望将其中一个子窗口绘制在其他窗口的“上方”,以在整个主窗体上显示消息。我怎样才能使孩子窗口最顶层?

我试着在子窗口上设置HWND_TOPMOST和HWND_TOP,但它似乎没有任何效果。我做错了什么,或者HWND_TOPMOST和HWND_TOP只能用于表单,而不是表单中的控件?

谢谢。

回答

3

HWND_TOPMOST只适用于顶层窗口,而不适用于子窗口。

使用带有HWND_TOP标志的SetWindowPos来更改目标子窗口的zorder,以将其置于其兄弟中的zorder顶部。

请注意,子窗口中的zorder仅适用于兄弟姐妹 - 与同一父母的hwnds。

1

当我想将滚动条控件放在所有子窗口的顶部时,我遇到了这个问题。

我的解决办法是:

  1. 使用WS_CLIPSIBLINGS到所有的子窗口。这可以防止重绘同级窗口的重叠区域。
  2. 使用hWndInsertAfter上带有HWND_TOP的SetWindowPos将其置于其他控件之上。