响应按钮的WM_NCHITTEST消息,返回HTCAPTION。

解决方案 »

  1.   

    简单一点的话,可以这么处理,这样你只要在窗口按下鼠标左键并拖动就行了
    case WM_LBUTTONDOWN:
        //如果需要拖动
        if(needDrag)
        {
            SendMessage(hWndGroupBox, WM_SYSCOMMAND,SC_MOVE+1,0);
            ::InvalidateRect(hWndGroupBox, NULL, TRUE);
            ::InvalidateRect(hWnd, NULL, TRUE);
        }
        break;
      

  2.   

    case WM_LBUTTONDOWN:
        //如果需要拖动
        if(needDrag)
        {
            SendMessage(hWndGroupBox, WM_SYSCOMMAND,SC_MOVE+1,0);
            ::InvalidateRect(hWndGroupBox, NULL, TRUE);//A
            ::InvalidateRect(hWnd, NULL, TRUE);        //B
        }
        break
    能否解释为何两次使用InvalidateRect(。。);
    谢谢!
      

  3.   

    case WM_NCHITTEST:
    {
     if(hWnd==hWndGroupBox)
      {
        return HTCAPTION;
      }
    }
    break;
      

  4.   

    是个long型值,返回HTCAPTION   告诉winodws(“欺骗它”)光标的热点位置在标题栏,这样就能移动你的窗口了(控件也是个窗口),就相当于我们在标题栏拖动鼠标时产生的效果...