void CYourView::OnMouseMove(UINT nFlags, CPoint point)
{CRect rect(StartPt,point);LOGBRUSH logBrush;
logBrush.lbStyle = BS_HOLLOW;

int OldROP;
CBrush brush;

brush.CreateStockObject(NULL_BRUSH);
OldROP = pDC->SetROP2(R2_XORPEN);
CPen *pOldPen = pDC->SelectObject(&pen);
CBrush *pOldBrush = pDC->SelectObject(brush);
pDC->Rectangle(rect);
pDC->SelectObject(pOldBrush);
pDC->SetROP2(OldROP);
}有必要的话可以判断一下鼠标是不是被按下了。
这个办法虽然可以实现,但是我觉得不是一个很好的办法,如果大家有什么好办法
一定要告诉我啊。

解决方案 »

  1.   

    太困了,上面的有点错误,更正如下。
    void CYourView::OnMouseMove(UINT nFlags, CPoint point)
    {CRect rect(StartPt,point);LOGBRUSH logBrush;
    logBrush.lbStyle = BS_HOLLOW;int OldROP;
    CBrush brush;brush.CreateStockObject(NULL_BRUSH);
    CDC *pDC = GetDC();
    OldROP = pDC->SetROP2(R2_XORPEN);CBrush *pOldBrush = pDC->SelectObject(brush);
    pDC->Rectangle(rect);
    pDC->SelectObject(pOldBrush);
    pDC->SetROP2(OldROP);
    ReleaseDC(pDC);
    }
      

  2.   

    我有一个类似的例子,是跟随鼠标画十交叉线的,你只修改一点就可以了。
    想要的话留下Email吧?
      

  3.   

    http://www.csdn.net/Expert/topic/431/431532.shtm
    coolxiao(coolxiao)给分
      

  4.   

    see the sample "drawcli" in msdn
    good luck
      

  5.   

    我已经找到了CRectTracker类,很好用的.但有两个不足:
    1.在OnLButtonDown()里执行m_RectTracker.TrackRubberBand(this,point,TRUE);后,系统将捕获不了WM_LBUTTONUP消息,也就是说在::OnLButtonUp{}里的程序将不再被执行;
    2.鼠标弹起后,虚线框不能保持.
      谁能帮我解决,立即加分!谢谢!
      

  6.   

    To ygd(ygd):我用了DrawFoucusRect(),能保持虚线框,但需要再次按下鼠标左键后,虚线框消失,该怎么办啊?
    谢谢!
      

  7.   

    To ygd(ygd):
    我在我的另一个帖子<菜鸟问题:如何跟随鼠标拉出一虚线矩形框?回复就有分!>里现在才注意你
    的"DrawFocusRect();结束时一定要偶次调用",原来偶次调用又能使虚线框消失,解决了我的问题.谢谢啊.
    给分了. 
      

  8.   

    但还有问题没有解决:
    在OnLButtonDown()里执行m_RectTracker.TrackRubberBand(this,point,TRUE);后,系统将捕获不了WM_LBUTTONUP消息,也就是说在::OnLButtonUp{}里的程序将不再被执行;谁能帮忙解决一下啊?
      

  9.   

    To jakieliu(边城浪子)
    执行m_RectTracker.TrackRubberBand(this,point,TRUE);后加上
    PostMessage(WM_LBUTTONUP);