タイトルバーをダブルクリックすると最大化や元のサイズに戻したり,ドラッグするとウィンドウの移動となる.
それをタイトルバー以外の場所で行うには, WM_NCHITTEST に対して HTCAPTION を返す.
ダイアログアプリでは,
UINT MyDlg::OnNcHitTest(CPoint point) {
return HTCAPTION;
}
となる.
SDK では以下の様になる.
case WM_NCHITTEST:
if ( DefWindowProc( hwnd, uMsg, wParam, lParam) == HTCLIENT)
return HTCAPTION;
else
break;
任意の長方形座標内をつまんで移動させるなら以下の様にする.
case WM_NCHITTEST:
rect はウィンドウ内の任意の長方形座標(あらかじめ定義する)
point.x = LOWORD(lParam);
point.y = HIWORD(lParam);
if( PtInRect( &rect, point) )
return HTCAPTION;
else
break;
また,システムメニューを使用する手もある.
case WM_LBUTTONDOWN:
SendMessage(hwnd, WM_SYSCOMMAND, SC_MOVE | 0x02, 0L);
return (0);
参照
タイトルバー以外での移動
キャプションのないダイアログの移動