アークピットのホームページに戻る

WinAPIトピックのトップページに戻る

APIトピックの各章に移動する

ダウンロードのページに移動する
ダウンロードができ
ない場合の対処法
 

ページ移動

2-5-7. ウインドウの最小サイズの制限の処理

 ここでは、フレームバーモジュールを使用する際に、ウィンドウのリサイズの最小サイズを制限する方法を説明します。

ウインドウの最小サイズの制限の処理

 FrameBar.c のテストプログラムでは、ウィンドウプロシージャの、WM_GETMINMAXINFO メッセージで以下の実行をしています。
        case WM_GETMINMAXINFO:  // ウィンドウのリサイズの許可を得る
        {
            RECT         rc[4];
            LPMINMAXINFO lpmmi;

            GetClientRect(hWnd,rc);
            GetRectFrameBar(rc);
            lpmmi = (LPMINMAXINFO)lParam;
            if (fSplit == FBF_VLINE)
            {
                lpmmi->ptMinTrackSize.x = rc[3].left + FBN_MINXLEN;
                lpmmi->ptMinTrackSize.y = FBN_MINYLEN;
            }
            else
            {
                lpmmi->ptMinTrackSize.x = FBN_MINXLEN;
                lpmmi->ptMinTrackSize.y = rc[3].top + FBN_MINYLEN;
            }
            return 0;
        }
 WM_GETMINMAXINFO メッセージはリサイズの要求があった時に発生します。そして、lParam には、MINMAXINFO 構造体のポインタが渡されますので、このメンバを変更することで、リサイズに制限を加えることができます。ptMinTrackSize メンバには、最小トラッキングサイズを設定します。最小トラッキングサイズとは、ウィンドの境界を使用して変更できる最小のウィンドウサイズのことです。

 ここでも、WM_SIZE と同じ様に、GetRectFrameBar 関数を使用して、3つのウィンドウ(hHello,hFrame,hEdit)を配置する範囲を設定します。そして、hEditのウィンドウが隠れないぐらいの大きさより、小さくならない様に設定します。

ページ移動