ウィンドウサイズを固定する

| コメント(0) | トラックバック(0) このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

続いて、ウィンドウサイズを固定することを考える。

前回の「設定」と今回の「固定」はどう違うかというと、
ここで「固定」とは、一度決めたサイズはユーザーが変更できないようにするということである。

前回作成したウィンドウだが、
ウィンドウエッジにマウスカーソルを持っていけば、マウスカーソルの形が変わって
ウィンドウサイズを自由に変更できるようになっている。
これでは、せっかく設定したウィンドウサイズも意味がない。

手っ取り早くウィンドウサイズを固定するには、
CreateWindow関数の第3引数から、WS_THICKFRAMEの値を引けばよい。
現在のプログラムは、WS_OVERLAPPEDWINDOWなので、
ここからWS_THICKFRAMEの値を引くには、

WS_OVERLAPPEDWINDOW & ~WS_THICKFRAME

とする。(ビット演算なので、単なる引き算ではダメ)

ついでに、ウィンドウの最大化も封印(使用不可)としよう。
この場合は、同じようにWS_MAXIMIZEBOXを引けばよい。

よって、プログラムのCreateWindow関数の呼び出しは、次のようになる。

hWnd = CreateWindow(szClassName, lpCmdLine,
                    WS_OVERLAPPEDWINDOW & ~WS_THICKFRAME & ~WS_MAXIMIZEBOX,
                    CW_USEDEFAULT, CW_USEDEFAULT, 320, 240, NULL, NULL, hInstance, NULL);

ちなみに、winuser.hでWS_OVERLAPPEDWINDOWの定義を見てみると、

#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU
                           | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)

となっている。
WS_OVERLAPPEDWINDOWがそもそも、他の値を組み合わせて作られたもののようだ。

トラックバック(0)

トラックバックURL: http://c-works.gonna.jp/mt-staff/mt-tb.cgi/43

コメントする