新建个一个对话框,用CDialog作为父类,请问如何禁止移动对话框?当然这个对话框时包含caption bar的。请各位指教!!

解决方案 »

  1.   

    截获鼠标位置, 当位置到你的caption bar时候, 把鼠标lbuttondown pretranslatemessage截获掉
      

  2.   

    添加WM_NCLBUTTONDOWN的映射函数,把CDialog::OnNcLButtonDown(nHitTest, point);注释掉
      

  3.   

    在OnMoveWindow里处理应该就可以了。
      

  4.   

    在OnMoveWindow里处理应该就可以了。
      

  5.   

    1、在OnMoveWindow中处理当然可以禁止移动,但是如果窗口中绘制的内容比较多,这样就会引起闪烁。OnMoveWindow是在移动窗口之后才移动的。
    2、如果屏蔽WM_NCLBUTTONDOWN消息,则窗口的关闭按钮也会失效。
    3、去掉caption bar也不太好,因为他上面可以显示当前对话框的名称。
      

  6.   

    void CDlg4Dlg::OnNcLButtonDown(UINT nHitTest, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    if(nHitTest == HTCLOSE||nHitTest == HTMAXBUTTON||nHitTest == HTMINBUTTON)
    CDialog::OnNcLButtonDown(nHitTest, point);
    }
      

  7.   

    OnNcHitTest,当CWnd::OnNcHitTest(point)值为HTCAPTION时改成HTCLIENT返回。
      

  8.   

    WM_NCHITTEST消息
    UINT CXXDlg::OnNcHitTest(CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    UINT nRet = CDialog::OnNcHitTest(point);
    return HTCAPTION == nRet ? HTCLIENT : nRet;
    }