1

この質問は私の以前の質問に関連しています。

I have an MFC (VC6) MDI Application which has several MDI child windows acting as different views for one document.

Is it possible to set one of those frames to stay on top of the others?
I have tried to call

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

and

ModifyStyleEx(0, WS_EX_TOPMOST);

from the CMDIChildWnd but neither appears to work.

4

2 に答える 2

2

CMDIChildWndクラス(通常はCChildFrame)に、静的を追加しますHWND m_hTopWnd。常に一番上になりたい子のHWNDと等しくなるように設定します。

で処理WM_WINDOWPOSCHANGEDCChildFrameます。ハンドラーで、現在の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 に答える