|
ウィンドウサイズ変更矢印の方向を制限するには、メッセージ 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

同人ダウンロード販売|DL.Getchu.com