如题,在OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) 
{
lpncsp->rgrc[0]=CRect(200,100,600,200);//这里指定客户区大小,假设为CRect(200,100,600,200). CDialog::OnNcCalcSize(bCalcValidRects, lpncsp);}我以为除CRect(200,100,600,200)以外的都是非客户区,但测试证明,只有垂直方向100以上的是非客户区,CRECT左边、右边、下面都不能拖动窗体! 请问这是怎么回事?
? 还是有更好的方法?

解决方案 »

  1.   

    这个你可以鼠标监测鼠标动作...在上下左右设定敏感区.当鼠标进入的并点击拖动的时候就处理消息.计算size.改变size就好了..特别是那种自绘的窗体
      

  2.   

    听得不是很明白,楼上什么意思?
    当鼠标进入的并点击拖动的时候就处理消息,处理什么消息? 计算SIZE?lpncsp->rgrc[0]=CRect(200,100,600,200);我这不就是计算么?
      

  3.   

    拖动窗体很简单的,响应WM_NCHITTEST消息,在你需要拖动的区域内返回HTCAPTION即可。
      

  4.   

    好了,可以了,谢谢MackZ! 想请问下这个原理是什么呀? 还有,我题目的lpncsp->rgrc[0]=CRect(200,100,600,200)左边、右边、下面都不能拖动窗体! 这是怎么回事?