1

这个问题与我之前的问题有关。

我有一个 MFC (VC6) MDI 应用程序,它有几个 MDI 子窗口充当一个文档的不同视图。

是否可以将其中一个框架设置在其他框架之上?
我试过打电话

SetWindowPos(
   &GetParentFrame()->wndTopMost,
   0, 0, 0, 0,
   SWP_NOMOVE | SWP_NOSIZE);

ModifyStyleEx(0, WS_EX_TOPMOST);

来自 CMDIChildWnd 但似乎都不起作用。

4

2 回答 2

2

在您的 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。

另请参阅:CodeProject 文章MSDN 知识库

于 2009-02-27T15:27:01.160 回答
0

您确定将子窗口置于其他窗口之上是一种好的 UI 设计吗?这不应该成为一个单独的最顶层框架吗?还是控制栏?

于 2009-02-28T13:09:41.107 回答