static控件中如何实现鼠标左键拖动,控件的Style为Notify鼠标左键 事件响应

解决方案 »

  1.   

    响应控件的单击消息
    void CXXXXStatic::OnLButtonDown(UINT nFlags, CPoint point)
    {
      PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x,point.y)); 
     }
      

  2.   


    我用的是
    UINT CMyClockDlg::OnNcHitTest(CPoint point) 
    {
     // TODO: Add your message handler code here and/or call default
     CRect rect;
         GetClientRect(rect);
     ClientToScreen(rect);
     if(rect.PtInRect(point))
     {
         return HTCAPTION;
     }
     else
     {
         return CDialog::OnNcHitTest(point);
     }
    }
    为啥不好使
      

  3.   

    static 有标题栏 边框么?
      

  4.   

    这肯定有问题。首先,这个ClientToScreen(rect);有点多余,其次,就算返回HTCAPTION,那也只会拖动对话框。
    在LButtonDown函数中这么写:
    CWnd* pWnd = GetDlgItem(IDC_STATIC_XXX);
    CRect rc;
    pWnd->GetClientRect(&rc);
    ClientToScreen(&rc);
    if(rc.PtInRect(pt))
    {
    pWnd->SendMessage(WM_NCLBUTTONDOWN,HTCAPTION,0);
    }
      

  5.   

    当然不会响应nc
    == nonclient 了