把标题栏去除,用鼠标单击客户区拖动窗体是如何实现的?

解决方案 »

  1.   

    响应鼠标操作,在MOUSEMOVE时用MOVEWINDOW实现窗体移动
      

  2.   

    //去除标题栏
    ModifyStyle( WS_CAPTION, 0 );//用鼠标单击客户区拖动窗体
    ::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, 0 ); //发送点中标题区消息
    CDialog::OnLButtonDown(nFlags, point);
    }
      

  3.   

    UINT C~dWnd::OnNcHitTest(CPoint point) 
    {
    return HTCAPTION  ;}
      

  4.   

    除去标题栏,该属性就可以。移动窗体要改改消息OnNcHitTest
    UINT CAboutDlg::OnNcHitTest(CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    UINT nHitTest = CDialog::OnNcHitTest(point);
    return (nHitTest == HTCLIENT)? HTCAPTION:nHitTest;
    // return CDialog::OnNcHitTest(point);
    }
      

  5.   

    这里有篇文章
    手工增加该消息映射,用classwizard是无法增加该消息的,在BEGIN_MESSAGE_MAP中加入消息ON_WM_NCHITTEST(),然后在头文件中加入:    afx_msg UINT OnNcHitTest(CPoint point);    在实现文件中,加入LBUTTONDOWN消息函数    void CClyzDlg::OnLButtonDown(UINT nFlags, CPoint point)
        {
            CTranDialog::OnLButtonDown(nFlags, point);//把CTranDialog改成你的基类 
            PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y)); 
        }    加入NCHITTEST消息函数    UINT CClyzDlg::OnNcHitTest(CPoint point)
        {
            UINT nHitTest = CTranDialog::OnNcHitTest( point );//把CTranDialog改成你的基类 
            return (nHitTest == HTCLIENT) ? HTCAPTION : nHitTest;
        }
    给分点上方的管理即可
      

  6.   

    重载WM_NCHITTEST
    UINT CAboutDlg::OnNcHitTest(CPoint point) 
    {
        UINT nHitTest = CDialog::OnNcHitTest(point);
        if(nHitTest==HTCLIENT)
             return HTCAPTION;
       return nHitTest;
    }