Last Updated 2004/09/08
MFC ウィンドウ

擬似タイトルバー


タイトルバーをダブルクリックすると最大化や元のサイズに戻したり,ドラッグ
するとウィンドウの移動となる.
それをタイトルバー以外の場所で行うには, 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); 
2004/09/08

参照
タイトルバー以外での移動
キャプションのないダイアログの移動


MFC ウィンドウ