ウィンドウサイズ変更矢印の方向を制限するには、メッセージ WM_NCHITTEST を処理する。 例: // 横方向へのサイズ変更を禁止する例です。 LRESULT APIENTRY WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { // サイズ変更矢印の制限ルール一覧 static const struct { LRESULT from; // 変換元 LRESULT to; // 変換先 } trans[] = { { HTLEFT, HTBORDER }, // 左端の左右矢印 → 矢印なし { HTRIGHT, HTBORDER }, // 右端の左右矢印 → 矢印なし { HTTOPLEFT, HTTOP }, // 左上隅の斜め矢印 → 縦矢印 { HTTOPRIGHT, HTTOP }, // 右上隅の斜め矢印 → 縦矢印 { HTBOTTOMLEFT, HTBOTTOM }, // 左下隅の斜め矢印 → 縦矢印 { HTBOTTOMRIGHT, HTBOTTOM }, // 右下隅の斜め矢印 → 縦矢印 }; // UINT uMsg; は、ウィンドウに送られてきたメッセージの値 switch( uMsg ) { case WM_NCHITTEST: { LRESULT lResult; // カーソル位置判定結果 // 変換一覧にあれば変換した値を返す。 lResult = DefWindowProc( hWnd, uMsg, wParam, lParam ); {for( int i = 0; i < numof(trans); ++i ) { if ( lResult == trans[ i ].from ) { return trans[ i ].to; } }} return lResult; } …… 省略 …… }//WindowProc 関連 | |
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
>> Amazon.co.jp 『たまゆら童子』 へ
>> 楽天ブックス 『たまゆら童子』 へ