首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MFC拉框放大、缩小功能如何在鼠标移动时绘制透明矩形框

MFC拉框放大、缩小功能如何在鼠标移动时绘制透明矩形框

作者头像
acoolgiser
发布2019-01-17 11:04:46
1.9K0
发布2019-01-17 11:04:46
举报

1. 在OnMouseMove鼠标移动事件中写入代码:

void ClmzWorkView::OnMouseMove(UINT nFlags, CPoint point)
{
if (LButtonDown == true)
{
    CDC *pDC = GetDC();
    pDC->SetROP2(R2_NOTXORPEN);
    CRect rect(startPt,endPt);
    pDC->Rectangle(rect);
    CRect rect2(startPt,point);
    pDC->Rectangle(rect2);
    endPt = point;
    ReleaseDC(pDC);
}
}

2. 定义全局变量:两个CPoint类型的点startPt,endPt,用于保存鼠标按下的点和鼠标松开的点;bool类型变量LButtonDown 用于保存鼠标的状态,值为true时表示鼠标按下,相反表示鼠标松开,只有当鼠标按下还未松开时才进行矩形框的绘制,否则会一

直调用OnMouseMove事件进行绘制。

     在头文件定义:

CPoint startPt,endPt;
bool LButtonDown;

 3. 在OnLButtonDown事件捕获鼠标按下点并设置LButtonDown的值:

void ClmzWorkView::OnLButtonDown(UINT nFlags, CPoint point)
{
    LButtonDown=true;
    startPt=point;
}

4. 在OnLButtonUp事件捕获鼠标松开点并设置LButtonDown的值:

void ClmzWorkView::OnLButtonUp(UINT nFlags, CPoint point)
{
    LButtonDown = false;
    endPt = point; 
}

注意,绘制时SetROP2方法的参数要设置为R2_NOTXORPEN,绘制的矩形框才是透明的。

最后效果图:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档