Last Updated 2004/09/22
Programming Tips Visual C++ MFC ウィンドウ  索 引 
「並べて表示」に反応させない
2004/09/22

タスクバーの「上下に並べて表示」,「左右に並べて表示」に反応しないようにするにはどうすればよいか?

スタイルに WS_EX_PALETTEWINDOW を指定すれば可能だが,Alt + Tab で表示されないし,タイトルバーにアイコンを表示できない.


WM_WINDOWPOSCHANGING を受け取った場合に細工してみる.

void CMainFrame::OnWindowPosChanging( WINDOWPOS* lpwndpos )
{
    UINT    flags = ( SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOCOPYBITS );
    // 特定のフラグの組み合わせが来たときだけ
    if ((lpwndpos->flags & flags) == flags) {
        // 動かなくする
        lpwndpos->flags |= ( SWP_NOSIZE | SWP_NOMOVE );
    }
    CFrameWnd::OnWindowPosChanging(lpwndpos);
}

こうすればウィンドウは動かない.
しかし,本来自分がいるべき箇所(並べられる箇所)を避けて他のウィンドウは整列してしまう.
はやり自ウィンドウだけの調整では難しいようである.


参照
前後のTips
「並べて表示」に反応させない

DSS ProgrammingTipsCGI Ver2.02