我想实现的是一个对话框去掉标题栏以后在客户区画出一块区域作为新的标题栏。但是这样的话新“标题栏”并不响应NC鼠标消息,所以无法实现鼠标移动窗口。如果想实现这个功能应该如何去做呢?最好详细点,不一定要写代码的。告诉我方法就可以了

解决方案 »

  1.   

    网上有很多的啊,例如这个:如何在无标题栏的对话框中模拟拖动标题栏移动对话框的效果。 
    主要是处理WM_NCHITTEST消息。
    代码如下:
    UINT CYourDlg::OnNcHitTest(CPoint point) 
    {
     CRect rc;
     GetClientRect(&rc);
     ClientToScreen(&rc);
     return rc.PtInRect(point) ? HTCAPTION : CDialog::OnNcHitTest(point);

      

  2.   

    原理同1楼void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point)
    {
    // TODO: Add your message handler code here and/or call default
            if(其他操作)
                ......//其他操作
             else
        PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
    CDialog::OnLButtonDown(nFlags, point);
    }
      

  3.   

    建立鼠标按下消息处理函数,当区域在新标题栏中,手动发WM_NCLBUTTONDOWN消息,在WM_NCLBUTTONDOWN消息函数中返回HTCAPTION