VC鼠标拖动动态画矩形框
来源:互联网 发布:中国如何注册io域名 编辑:程序博客网 时间:2024/05/01 18:26
http://blog.csdn.net/lijiang889988/article/details/7369068
要实现的功能实际上很简单,一般人都用到见惯不惯了,但是实现起来还是有点意思的。
问题详细描述:(三步)
单击鼠标左键时记录下单击点;
鼠标拖动时,显示的矩形框能够动态的跟随显示;
释放鼠标左键时擦出矩形框。
这样分析其实问题就简单一些了,只需要对鼠标的三个事件进行相应就可以了。
代码主要在三处地方修改了:
第一处:VIEW类中设置私有变量(VIEW类.h文件中)
private:
BOOL m_startRect; //绘制矩形框标志
CPoint m_startPoint; //矩形框开始点
CPoint m_OldPoint; //矩形框终点(但是它是上一次的点,所以这里用了Old标识)
第二处:VIEW类构造函数中初始化私有变量(VIEW类.cpp文件中)
CMouseDragView::CMouseDragView()
{
//初始化私有变量
m_startRect = FALSE;
m_startRect = 0;
m_OldPoint = 0;
}
第三处:定义消息响应函数(VIEW类.cpp文件中)
//单击鼠标左键
void CMouseDragView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_startRect = TRUE; //鼠标左键单击,设置可以开始绘制矩形框
m_startPoint = point; //记录开始点
m_OldPoint = point; //设置老点也为开始点
CView::OnLButtonDown(nFlags, point);
}
//拖动鼠标
void CMouseDragView::OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this); //获取设备句柄
//SetRop2 Specifies the new drawing mode.(MSDN)
//R2_NOT Pixel is the inverse of the screen color.(MSDN)
//即:该函数用来定义绘制的颜色,而该参数则将颜色设置为原屏幕颜色的反色
//这样,如果连续绘制两次的话,就可以恢复原来屏幕的颜色了(如下)
//但是,这里的连续两次绘制却不是在一次消息响应中完成的
//而是在第一次拖动响应的绘制可以显示(也就是看到的),第二次拖动绘制实现擦出(也就看不到了)
dc.SetROP2(R2_NOT); //此为关键!!!
dc.SelectStockObject(NULL_BRUSH); //不使用画刷
if (TRUE == m_startRect) //根据是否有单击判断是否可以画矩形
{
dc.Rectangle(CRect(m_startPoint,m_OldPoint));
dc.Rectangle(CRect(m_startPoint,point));
m_OldPoint = point;
}
CView::OnMouseMove(nFlags, point);
}
//释放鼠标左键
void CMouseDragView::OnLButtonUp(UINT nFlags, CPoint point)
{
m_startRect = FALSE; //重置绘制矩形框标志
//消隐最后的一个矩形(其原理跟拖动时矩形框绘制原理相同)
CClientDC dc(this);
dc.SetROP2(R2_NOT);
dc.SelectStockObject(NULL_BRUSH);
dc.Rectangle(CRect(m_startPoint,m_OldPoint));
CView::OnLButtonUp(nFlags, point);
}
本人首先显示了一幅Bitmap图片,然后添加了上面的鼠标事件,结果如下:
此程序有个缺点,点击鼠标左键确定起点,拖动鼠标开始拉矩形框,松开鼠标左键框消失,
如果保持住拉出的框呢?
- VC鼠标拖动动态画矩形框
- VC鼠标拖动动态画矩形框
- VC鼠标拖动动态画矩形框
- c#鼠标拖动画矩形
- 鼠标拖动这个矩形(GDI+)
- winfrom-拖动鼠标绘制矩形
- MFC拖动鼠标画矩形中的三个问题
- 如何在鼠标拖动时出现矩形框
- 用canvas实现鼠标拖动绘制矩形框
- VC制作可鼠标拖动及改变大小的矩形:CRectTracker“橡皮筋类”的应用
- 问题日记:VC MFC 鼠标移动画矩形
- VC用异或笔画动态拖选框(方框随着鼠标拖动而变化)
- VC MFC 对话框,如何实现鼠标拖动显示一个框,松开鼠标框就消失
- 鼠标点击画矩形
- 鼠标画矩形
- VC - MFC鼠标拖动效果编程
- HTML+js实现鼠标绘制可拖动矩形
- DrawMouseEvent.py 拖动鼠标时绘制矩形或者是圆圈
- rsync服务器与客户端配置文件
- 双端队列(dequeue)链表实现
- CreateCompatibleBitmap返回NULL,GetLastError却返回0
- 新人第一篇,JAVA中获取本地tomcat路径
- function template函数模版
- VC鼠标拖动动态画矩形框
- 徐子:坐保成业,“百战百胜”(1)
- ARP:地址解析协议
- 转:ubuntu 下code blocks 安装全过程 && codeblocks 快捷键 && 解决调试终端不能粘贴问题
- 使IP最后一个点后面变成*
- Hook :VC++消息钩子编程
- winpcap 天生缺陷
- ESP定理如何判断找出OEP 【OEP脱壳的5种方法】
- 一条SQL条件选择数据库记录(再现非Oracle数据库的脑残的连接操作符号)