none
CRectTracker RRS feed

  • 常规讨论

  •  

    我在OnLButtonDown事件中添加如下代码:

     

     if (MAT_OPERATION_TYPE==LOAD_BAG && m_showCoordinate==false)
     {
      CRectTracker m_LocalTracker;
      BOOL rt;
      CRect TepmRect;
      rt=m_LocalTracker.TrackRubberBand(this,point,TRUE);
      if (rt==TRUE)
      {
       m_LocalTracker.GetTrueRect(&TepmRect);
       if(TepmRect.Width() > 4 && TepmRect.Height() > 4)
       {
        m_CurrentRect=TepmRect;
        m_RectList.insert(m_RectList.end(),m_CurrentRect);
        HGDIOBJ hold; 
        HPEN hpen;
        CClientDC *dc= (CClientDC*)GetDC();
        dc->SetBkMode(TRANSPARENT);
        int Old = SetROP2(dc->m_hDC ,R2_XORPEN);
        hold = SelectObject(dc->m_hDC, GetStockObject(HOLLOW_BRUSH));
        hpen = (HPEN) SelectObject(dc->m_hDC,
         CreatePen(PS_SOLID, 1,RGB(255,255,255)));
        dc->Rectangle(&m_CurrentRect);
        SetROP2(dc->m_hDC, Old); //add by lhw in 2005-8-23
        SelectObject(dc->m_hDC, hpen);  
        SelectObject(dc->m_hDC, hold); 
        ReleaseDC(dc);
       }   
      }
     }
     COleControl:SurprisenLButtonDown(nFlags, point);

     

    目的是画一系列的矩形诓,并保存矩形框的信息,但是总是第一次画成功,第二次画不出,然后第三次又成功,第四次又失败,依次类推,不知道是什么原因,我查看帮助说rt=m_LocalTracker.TrackRubberBand(this,point,TRUE);函数从调用开始到鼠标抬起或按下鼠标右键,调用才结束,我发现成功画出的时候,在这个函数加断点,F10不向下执行,等我再按一次鼠标才执行,画失败的时候,F10可继续运行,请大家帮帮忙,看看是什么原因,谢谢。

    2009年1月6日 12:01