橡皮筋类CRectTracker

来源:互联网 发布:国际象棋软件 编辑:程序博客网 时间:2024/04/27 23:29

其响应WM_LBUTTONDOWN和WM_SETCURSOR消息,因此其实现在这两个消息的响应函数内。下面写了一个例程,并进行分析。

CRectTracker m_tracker;m_tracker.m_nStyle=CRectTracker::resizeInside|CRectTracker::solidLine|CRectTracker::hitNothing;CPoint pt_start,pt_end;void *****::OnLButtonDown(UINT nFlags, CPoint point){  if(m_tracker.HitTest(point)<0)  {    CRectTracker temp;  temp.TrackRubberBand(this,point);      temp.m_rect.NormalizeRect();      pt_start=point;//鼠标(矩形选框)结束位置     GetCursorPos(&pt_end);     this->SendMessage(WM_LBUTTONUP,NULL,NULL);//响应此消息绘制新的矩形区域  }  else  {  m_rectTracker.Track(this,point,TRUE);m_tracker.m_rect.NormalizeRect();   m_tracker.Draw();  }}void *****::OnLButtonUp(UINT nFlags,CPoint point){  ScreenToClient(&pt_start);  ScreenToClient(&pt_end);  m_tracker.m_rect.SetRect(pt_start.x,pt_start.y,pt_end.x,pt_end.y);  m_rectTracker.m_rect.NormalizeRect();  m_tracker.Draw();}


参考文章:

http://blog.sina.com.cn/s/blog_583959c90100blk3.html


0 0