Last Updated 2004/09/08
Programming Tips Visual C++ MFC ウィンドウ  索 引 
擬似タイトルバー
2004/09/08

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


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

DSS ProgrammingTipsCGI Ver2.02