MFC刷新矩形区域并在矩形中写入动态的数据,矩形不断闪烁
时间:2011-11-28
来源:互联网
写一个程序在窗口左侧跟随鼠标移动在鼠标的Y坐标(X坐标为0)的位置不断显示鼠标的Y坐标,我是先刷新的旧的矩形,再在新的矩形区域写入数据,鼠标移动时数据区域不断闪烁,鼠标不动时只显示背景而不显示数据矩形。代码如下:
C**View::OnMouseMove(UINT nFlags, CPoint point)
{
CRect OldRect(0,yOld,40,yOld+20);//yOld是View类中定义的全局变量,为获取上一次的纵坐标
InvalidateRect(&OldRect,FALSE);//刷新上一次的矩形区域
CHAR szhData[256]={0};//定义一个字符串
sprintf((char*)szhData, "%d ",point.y);//将纵坐标转换为字符串
CRect hRct(0,point.y,40,point.y+20);//要写数据的区域
CClientDC dc(this);//得到窗口客户区
dc.FillSolidRect(&hRct,RGB(0,0,255));//设置数据区域背景
dc.SetTextColor(RGB(255,255,255));//设置文字颜色
dc.DrawText(szhData,&hRct,DT_LEFT);//数据区显示文字
yOld=point.y;//得到本次的纵坐标以便下次刷新
}
C**View::OnMouseMove(UINT nFlags, CPoint point)
{
CRect OldRect(0,yOld,40,yOld+20);//yOld是View类中定义的全局变量,为获取上一次的纵坐标
InvalidateRect(&OldRect,FALSE);//刷新上一次的矩形区域
CHAR szhData[256]={0};//定义一个字符串
sprintf((char*)szhData, "%d ",point.y);//将纵坐标转换为字符串
CRect hRct(0,point.y,40,point.y+20);//要写数据的区域
CClientDC dc(this);//得到窗口客户区
dc.FillSolidRect(&hRct,RGB(0,0,255));//设置数据区域背景
dc.SetTextColor(RGB(255,255,255));//设置文字颜色
dc.DrawText(szhData,&hRct,DT_LEFT);//数据区显示文字
yOld=point.y;//得到本次的纵坐标以便下次刷新
}
作者: xylovefq 发布时间: 2011-11-28
改成这样试试:
画矩形在OnPaint中处理.
显示文本在OnMouseMove或者用Ontime处理.
画矩形在OnPaint中处理.
显示文本在OnMouseMove或者用Ontime处理.
作者: yuucyf 发布时间: 2011-11-28
引用 1 楼 yuucyf 的回复:
改成这样试试:
画矩形在OnPaint中处理.
显示文本在OnMouseMove或者用Ontime处理.
改成这样试试:
画矩形在OnPaint中处理.
显示文本在OnMouseMove或者用Ontime处理.
我的目的不是画矩形啊,而是在这个矩形区域中显示文字,这个矩形区域是随鼠移动的,每次写入数据前都要刷新上一次的区域。
作者: xylovefq 发布时间: 2011-11-28
没看懂要干什么
作者: buyong 发布时间: 2011-11-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28