自分のウィンドウが使える(フォーカスがある)状態の時に、その子ウィンドウを親ウィンドウよりも手前に、最小化や他のウィンドウが使用されていて、自分のウィンドウが使えない(フォーカスがない)状態の時にはその手前にあるウィンドウを非表示もしくは奥にいさせたいです。(Azpeinterのツールウィンドウのような感じにしたいです。)
一応、以下の方法でしてみたのですが、フォーカスが移った時や、ダイアログを出してもそのツールウィンドウが最前面にいます。
C++
1 2LRESULT CALLBACK Proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { 3 ... 4 //wnd1とwnd2には同じ親ウィンドウがいて、ツールウィンドウ。 5 if (HWND temp = GetFocus(); temp != wnd1 || temp != wnd2) { 6 7 case WM_SETFOCUS: 8 SetWindowPos(wnd1, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); 9 SetWindowPos(wnd2, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); 10 break; 11 case WM_KILLFOCUS: 12 SetWindowPos(wnd1, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); 13 SetWindowPos(wnd2, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); 14 break; 15 } 16 ... 17}
又、フォーカスがあるとき、前面になるのはwnd2のみです。
両方のウィンドウが親ウィンドウより前にいて、上記のような感じになってほしいです。
実行結果(上部にwnd1が表示されていてほしい。)
語彙力が足りないと思いますが、どなたかご教授お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/01/31 23:55 編集
2021/02/27 07:06