InvalidateRect函数的参数rect是如何传递的呢?

chinaren_shibo 2005-06-01 09:36:18
一直搞不懂这个问题,InvalidateRect执行完后会发送一个WM_PAINT消息,但是重画区域rect这个参数是如何传递的呢,比如我在OnDraw函数里怎么知道去重画哪部分?谢谢!
...全文
460 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dch4890164 2005-08-10
  • 打赏
  • 举报
回复
呵呵,我也看了VC++技术内幕好象没有这个东西的说明啊!!
我认为如果你真想搞明白的话去查MFC源代码,个人认为没有必要究的这样深!!呵呵
ronglisheng 2005-08-10
  • 打赏
  • 举报
回复
VC++技术内幕第2章的东西,自己去看
chinaren_shibo 2005-06-07
  • 打赏
  • 举报
回复
是不是说如果想利用InvalidateRect进行高效的重画,相应地在OnDraw里就要调用GetClipBox获取需要重画的区域啊,如果不这样,实际上调用InvalidateRect是起不了什么作用的???
CWestWolf 2005-06-05
  • 打赏
  • 举报
回复
如果OnDraw里对整个界面都有相应的处理,那么调用InvalidateRect就没有什么意义了啊
反正都是重画整个客户区。
----------------------------------

当然有意义了,如果不指定处理的rect,系统就默认为整个客户区,些时InvalidateRect的作用就是通知重画啊,只不是没有特别指定重画范围而已,当然,如果我不想重画整个区域,我就可以用pDC->GetClipBox(&rect);来设计要重画的范围
aben456 2005-06-02
  • 打赏
  • 举报
回复
你ONDRAW里面应该对整个界面都有相应的处理吧
INVALIDATERECT之后会自动刷新该RECT就行了
pomelowu 2005-06-02
  • 打赏
  • 举报
回复
或者用BeginPaint传入一个PAINTSTRUCT 结构,其中的rcPaint属性就是无效区域
chinaren_shibo 2005-06-02
  • 打赏
  • 举报
回复
我看糊涂了,有没有比较系统的解释啊,

to aben456(相逢一笑):

如果OnDraw里对整个界面都有相应的处理,那么调用InvalidateRect就没有什么意义了啊
反正都是重画整个客户区。

Featured 2005-06-01
  • 打赏
  • 举报
回复
比如
CRect rect;
GetClientRect(&rect);
pDC->GetClipBox(&rect);

就会重画整个客户区

chinaren_shibo 2005-06-01
  • 打赏
  • 举报
回复
能详细解释一下么
jerry 2005-06-01
  • 打赏
  • 举报
回复

CRect rc;
pDC->GetClipBox(&rc);

// 画rc 以内的部分即可

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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