此问题与my previous one.
有关我有一个MFC(VC6)MDI应用程序,它有几个MDI子窗口作为一个文档的不同视图。
是否可以设置其中一个框架以保持其他框架之上?
我试过打电话
SetWindowPos(
&GetParentFrame()->wndTopMost,
0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE);
和
ModifyStyleEx(0, WS_EX_TOPMOST);
来自CMDIChildWnd的但似乎都不起作用。
答案 0 :(得分:1)
在您的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子窗口的位置,“always on top”窗口就会被推回到顶部。
同时处理WM_CLOSE
,当顶部窗口关闭时,设置m_hTopWnd = NULL。
答案 1 :(得分:1)
您确定将儿童窗口置于其他窗口之上是否是良好的UI设计?这不应该成为一个单独的最顶层框架吗?还是一个控制栏?