用CRectTracker画橡皮筋
用CRectTracker画橡皮筋可以吧,但不知何处不对,画出来的效果却不尽人意:
第一次善可以,重新激活该窗口时画出来的橡皮筋却总偏离鼠标,观察距离,象是ClientToScreen()用得不对.但去掉又不行按反方向偏离鼠标.请问:哪错了?
我用的代码如下:
//(class CMyScreen : public CWnd)
void CMyScreen::OnLButtonDown(UINT nFlags, CPoint point)
{
m_OriginPoint=point;
if(Rgn_tracker!=NULL)
{
delete Rgn_tracker;
Rgn_tracker=NULL;
}
ClientToScreen(&point);
if(IsFreeze)
{
IsMDown=TRUE;
}
Rgn_tracker=new CRectTracker(CRect(0,0,0,0),CRectTracker::resizeInside|CRectTracker::dottedLine);
Rgn_tracker->Track(this,point);
CWnd::OnLButtonDown(nFlags, point);
}
void CMyScreen::OnMouseMove(UINT nFlags, CPoint point)
{
if(IsMDown==TRUE)
{
ClientToScreen(&point);
CPoint tempPoint=OriginPoint;
ClientToScreen(&tempPoint);
Rgn_tracker->DrawTrackerRect(CRect(tempPoint,point),
this,
pScrDC,
this);
}
CWnd::OnMouseMove(nFlags, point);
}
void CMyScreen::OnLButtonUp(UINT nFlags, CPoint point)
{
if(IsMDown!=TRUE )
{
CWnd::OnLButtonUp(nFlags, point); return ;
}
IsMDown=FALSE;
m_OriginPoint.x=m_OriginPoint.y=0;
InvalidateRect(NULL);
UpdateWindow();
CWnd::OnLButtonUp(nFlags, point);
}