Win32
ウィンドウサイズの変更を制限する


HomeProgramming TipsWin32SDK Tips[SDK-008]
※ MFC の処理は こちら です。

WM_WINDOWPOSCHANGING メッセージでサイズを判定します。
サイズはウィンドウ外周なので、もし、クライアントサイズで調整したい場合は、
AdjustWindowRectEx() を使って、外周サイズを求めます。
サンプルはクライアントサイズで制限しています。


    // ウィンドウ作成時の情報をどこかに保存しておく
    const DWORD c_dwStyle   = WS_OVERLAPPEDWINDOW;
    const DWORD c_dwExStyle = 0;
    const BOOL  c_bMenu     = FALSE;

    // プロシージャ関数内
    case WM_WINDOWPOSCHANGING:
    {
        // 幅の変更を抑止する(例/クライアントサイズ: 幅768,高さ512まで)
        LPWINDOWPOS lpwndpos = (LPWINDOWPOS)lParam;
        RECT rc = { 0, 0, 768, 512 };
        ::AdjustWindowRectEx(&rc, c_dwStyle, c_bMenu, c_dwExStyle);
        int nWidth  = rc.right  - rc.left;
        int nHeight = rc.bottom - rc.top;
        if (lpwndpos->cx > nWidth)  lpwndpos->cx = nWidth;
        if (lpwndpos->cy > nHeight) lpwndpos->cy = nHeight;
        return TRUE;
    }




 Copyright 2008 VALGUS. All Rights Reserved.