打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[转载]CDC::DrawDragRect应用实例
原文地址:CDC::DrawDragRect应用实例作者:博海

转:http://hi.baidu.com/chenjingzhou/blog/item/5be13926d6a41eaa4723e89c.html

第一步:响应鼠标左键按下消息,设置矩形原点、开始矩形绘制标记

void CRectView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_bFirstDraw=TRUE;
m_bDraw=TRUE;
m_ptOrigin=point;
CView::OnLButtonDown(nFlags, point);
}

第二步:响应鼠标左键弹起消息,取消绘制标记和选择区域

void CRectView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_bDraw=FALSE;

// 取消选择区域虚线框

CClientDC dc(this);
CRect rect(0,0,0,0);
dc.DrawDragRect(rect,CSize(1,1),m_rect,CSize(1,1),NULL,NULL);

// 如果不想取消,请将上面3行代码注释掉即可


CView::OnLButtonUp(nFlags, point);
}

第三步:响应鼠标移动消息,应用CDC::DrawDragRect()绘制矩形

void CRectView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(m_bDraw==TRUE)
{
   CClientDC dc(this);
   CRect rect(m_ptOrigin,point);
   rect.NormalizeRect();                                  // 使矩形区域正常,如从下往上拖动鼠标
   CBrush brush;
   brush.CreateStockObject(RGB(255,0,0));
   if(m_bFirstDraw==TRUE)
   {
    m_bFirstDraw=FALSE;
    dc.DrawDragRect(rect,CSize(1,1),NULL,CSize(1,1),NULL,NULL);
   }
   else
   {
    dc.DrawDragRect(rect,CSize(1,1),m_rect,CSize(1,1),NULL,NULL);
   }
   m_rect.CopyRect(rect);
}
CView::OnMouseMove(nFlags, point);
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
CRectTracker类的使用
从CStatic类派生自己的切分窗口类
VC程序中树型控件节点拖动的完美实现
如何实现可拉伸对话框?
给VC程序加入超级链接功能 -- 狼窝工作室 -- 编程爱好者博客
VC中利用MFC设计绘图程序初步
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服