+ -
当前位置:首页 → 问答吧 → MFC刷新矩形区域并在矩形中写入动态的数据,矩形不断闪烁

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;//得到本次的纵坐标以便下次刷新
}

作者: xylovefq   发布时间: 2011-11-28

改成这样试试:
画矩形在OnPaint中处理.
显示文本在OnMouseMove或者用Ontime处理.

作者: yuucyf   发布时间: 2011-11-28

引用 1 楼 yuucyf 的回复:

改成这样试试:
画矩形在OnPaint中处理.
显示文本在OnMouseMove或者用Ontime处理.

我的目的不是画矩形啊,而是在这个矩形区域中显示文字,这个矩形区域是随鼠移动的,每次写入数据前都要刷新上一次的区域。

作者: xylovefq   发布时间: 2011-11-28

没看懂要干什么

作者: buyong   发布时间: 2011-11-28