• CRectTracker在CScrollView中的使用(转)


    http://topic.csdn.net/u/20080625/13/cf92a220-d2a9-4f05-ae53-7acce4dd84dc.html

    o(∩_∩)o...,谢谢了,成功了

    我一开始是按你说的来做的,没成功,你那句“这两句是多余的。。”让我把所有你里边关于rect的语句都去掉了

    好了,结贴吧,呵呵,谢谢了,不过我得把问题解决方法说清楚先:
    第一步:在视类头文件里添加  
    CRectTracker m_tracker;  
    CRect m_RectTrack; //当时只注意到了mxm324仁兄说那两句可以不要,没注意到后边半句才是关键“rect是成员变量”=_=!

    第二步:在构造函数里初始化  
    CtrackerView::CtrackerView()  
    {  
      m_RectTracker.SetRect(100,100,200,200); //初始化大小  
      m_tracker.m_nStyle = CRectTracker::solidLine ¦ CRectTracker::resizeInside; //设置边框样式  
    }  

    第三步:在OnDraw函数里画出来  
    void CtrackerView::OnDraw(CDC* pDC)  
    {  
      CtrackerDoc* pDoc = GetDocument();  
      ASSERT_VALID(pDoc);  
      if (!pDoc)  
      return;  

      CBrush brush(RGB(192,192,192));  
      pDC->SelectObject(&brush);  

    ////////////// mxm324仁兄说下面两句可以注释掉,但我尝试后发现,
    ////////////// 第二句是必须的,否则没法画出矩形
      pDC->Rectangle(m_RectTracker);
      m_tracker.m_rect = m_RectTracker;

      pDC->LPtoDP(&m_tracker.m_rect);
      m_tracker.Draw(pDC);
    }
     
    第四步:更改OnLButtonDown函数
    void CtrackerView::OnLButtonDown(UINT nFlags, CPoint point)  
    {  
      CClientDC dc(this);
      m_tracker.Track(this,point);
      m_RectTracker = m_tracker.m_rect;
      OnPrepareDC(&dc);
      dc.DPtoLP(&m_RectTracker);
      this->Invalidate(TRUE);

      CScrollView::OnLButtonDown(nFlags, point);  
    }
     
    第五步:设置光标
    BOOL CtrackerView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)  
    {  
      if(pWnd == this && m_tracker.SetCursor(this, nHitTest)) //当鼠标进入到方块范围内则改变光标  
      return TRUE;  
      return CScrollView::OnSetCursor(pWnd, nHitTest, message);  
    }  

  • 相关阅读:
    对比git rm和rm的使用区别
    Gerrit日常维护记录
    [原创]Gerrit中文乱码问题解决方案分享
    MySQL 高可用架构
    MySQL 高可用架构
    Android L开发指南
    如何使用GOOGLE高级搜索技巧
    Linux定时关机
    Android源码批量下载及导入到Eclipse
    怎样将Android SDK源码 导入到Eclipse中?
  • 原文地址:https://www.cnblogs.com/lebronjames/p/2063028.html
Copyright © 2020-2023  润新知