橡皮筋类CRectTracker

本文详细介绍了如何使用CRectTracker类来实现矩形选框功能。通过响应WM_LBUTTONDOWN和WM_SETCURSOR消息,利用CRectTracker进行矩形区域的选择与绘制。文中提供了具体的实现代码及关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其响应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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值