如何使 MDI 子窗口位于其兄弟窗口之上?
-
09-09-2019 - |
题
这个问题与 我的上一个。
我有一个 MFC (VC6) MDI 应用程序,它有多个 MDI 子窗口,充当一个文档的不同视图。
是否可以将其中一个框架设置为位于其他框架之上?
我试过打电话
SetWindowPos(
&GetParentFrame()->wndTopMost,
0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE);
和
ModifyStyleEx(0, WS_EX_TOPMOST);
来自 CMDIChildWnd 但似乎都不起作用。
解决方案
在您的 CMDIChildWnd 类(通常是 CChildFrame)中,添加一个静态 HWND m_hTopWnd
. 。将其设置为等于您希望始终位于顶部的子项的 HWND。
处理 WM_WINDOWPOSCHANGED
在 CChildFrame
. 。在处理程序中,检查当前是否 m_hWnd == m_hTopWnd
. 。如果没有,请致电
::SetWindowPos(m_hTopWnd, HWND_TOP, 0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
这样,每当设置任何 MDI 子窗口的位置时,“始终位于顶部”的窗口都会被推回到顶部。
还处理 WM_CLOSE
当顶部窗口关闭时,设置 m_hTopWnd = NULL。
其他提示
您确定这是很好的用户界面设计,以保持一个子窗口在别人的顶部?如果不是这成为一个独立的最顶层的框架?或控制杆?
不隶属于 StackOverflow