重绘屏幕指定区域没达到预期

gelu1040 2010-07-13 11:15:46
程序大致这样
while(1)
{
int rt=InvalidateRect(NULL,&or,TRUE);
DrawText(hdc,ot,len,&or,DT_CENTER|DT_VCENTER|DT_SINGLELINE);

}

RECT or 都设置好的,就是输出文字的区域。

1、当设置InvalidateRect第一个参数未NULL,发现所有窗口是被刷新的了,但是刷新的是整个屏幕范围。并非or指定的区域;
2、当设置InvalidateRect非NULL,发现没效果。第二次绘制的文字直接覆盖在第一次绘制的文字上。
3、InvalidateRect第三个参数在1、2情况下好像都不起作用,都是一样的效果。

啥整啊
...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
icansaymyabc 2010-07-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gelu1040 的回复:]
如何做才能达到黑板擦的效果啊?
[/Quote]
BitBlt 可以将某一区域绘制成背景,可以当作黑板擦
hastings 2010-07-13
  • 打赏
  • 举报
回复
InvalidateRect引发的WM_PAINT消息的优先级很低~~~牢记。。
gelu1040 2010-07-13
  • 打赏
  • 举报
回复
怎么会全屏幕闪动呢?
应该是RECT or 范围内闪动才对啊
gelu1040 2010-07-13
  • 打赏
  • 举报
回复
如何做才能达到黑板擦的效果啊?

icansaymyabc 2010-07-13
  • 打赏
  • 举报
回复
你的程序这样写有意义吗?
更新屏幕显示之后马上绘制新内容。要知道InvalidateRect不是黑板擦哦

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧