我的Dialog的风格被我设置为None,因为所有的图形我都要自绘这样的话,我就要自己处理窗口移动消息。
  我的方法是,当鼠标被点击的时候,记录当前窗口,然后在mousemove里面实现窗口的移动。
 这样窗口确实移动了,但是有很多缺点。
  第一是移动不同步  ,如果我慢速移动窗口,则窗口很正常,如果速度过快,窗口跟不上鼠标的移动步伐,并且程序没有其他的函数消耗时间。
  第二是窗口的移动导致窗口上的控件图片不能正常显示,我的窗口上的关闭按钮是自己粘贴的一张图片,窗口在移动的时候如果朝下移动则没事,向上的话,该按钮的图片被覆盖。 
  

解决方案 »

  1.   

    afx_msg UINT OnNcHitTest( CPoint point );在消息映射中添加映射:ON_MESSAGE( WM_NCHITTEST, OnNcHitTest )UINT C***Dlg::OnNcHitTest( CPoint point ){        UINT nHitTest;        nHitTest = CWnd::OnNcHitTest( point );         if( nHitTest == HTCLIENT )         {                nHitTest = HTCAPTION;  // 点击客户区(除了界面上的控件)可以拖动对话框        }        return nHitTest;       }
      

  2.   

    响应WM_LBUTTONDOWN消息,SendMessage(WM_NCLBUTTONDOWN,(WPARAM)HTCAPTION,MAKELPARAM(5,5));就行了