在CScrollView类::OnMouseMove(UINT nFlags, CPoint point)里当我
拖动滚动条移动后这没我鼠标指的原来那点还是相同的point.x,point.y值呢?
  point指的映射单位,
   我用
   this->GetScrollPosition();
   想获得point逻辑单位这么不行啊!
  请问有什么好方法获得

解决方案 »

  1.   

    MouseMove应该是在鼠标没有被按下时移动才会进去,而按下鼠标的拖动不应该是这样做的。
      

  2.   

    请问我是在状态栏上显示的,拖动滚动条移动后这没我鼠标指的原来那点还是相同
         CMainFrame* pMFrame = (CMainFrame*)AfxGetMainWnd();
         sprintf(PositionString,"X=%d",point.x);
          pMFrame->m_wndStatusBar.SetPaneText(1,PositionString,TRUE);
          sprintf(PositionString,"Y=%d",point.y);
         pMFrame->m_wndStatusBar.SetPaneText(2,PositionString,TRUE);     想获得point逻辑单位这么不行啊!
      请问有什么好方法获得
      

  3.   

    void CMyScrollReportView::OnUpdateMouseX(CCmdUI* pCmdUI)
    {
    CString strTemp;
    CPoint ptMouse;
    GetCursorPos(&ptMouse);
    CRect rect;
    GetWindowRect(rect);
    if(rect.PtInRect(ptMouse)){
    ScreenToClient(&ptMouse);
    ClientToLogical(ptMouse);
    strTemp.Format("X:%d",ptMouse.x);
    }
    pCmdUI->SetText(strTemp);
    }
    void CMyScrollReportView::ClientToLogical(CPoint& point)
    {
    CClientDC dc(this);
    OnPrepareDC(&dc, NULL);
    dc.DPtoLP(&point);
    }