WM_PAINT的小问题

zhangyanli 2008-05-08 08:48:42
一般可以呼叫GetDC和ReleaseDC来对键盘消息(如在字处理程序中)和鼠标消息(如在画图程序中)作出反应。此时,程序可以立刻根据使用者的键盘或鼠标输入来更新显示区域,而不需要考虑为了窗口的无效区域而使用WM_PAINT消息。不过,一旦确实收到了WM_PAINT消息,程序就必须要收集足够的信息后才能更新显示。

最后一句话的足够的信息指的是什么?
...全文
216 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
alan001 2008-05-14
  • 打赏
  • 举报
回复
Up
Eleven 2008-05-11
  • 打赏
  • 举报
回复
up
九桔猫 2008-05-11
  • 打赏
  • 举报
回复
4楼解释的很清楚。
well4u 2008-05-11
  • 打赏
  • 举报
回复
WM_PAINT消息是重绘消息,当用户调用InvalidateRect后,系统会用背景色填充背景,然后发出WM_PAINT消息,通知用户字节重绘前景内容。系统不会保留前景内容,全部是由自己画的。
hastings 2008-05-11
  • 打赏
  • 举报
回复
就是影子绘图.画的其实跟刷新的不是同一个东西.
zhangyanli 2008-05-09
  • 打赏
  • 举报
回复
也就是要保存你画的直线,供WM_PAINT的处理函数使用?

那要使用InvalidateRect呢?还用保存吗?
arong1234 2008-05-08
  • 打赏
  • 举报
回复
意思是你通过GetDC()然后绘制然后再ReleaseDC方式绘制的内容,当处理WM_PAINT时,必须能原原本本的绘制出来

例如你可以通过移动鼠标绘制直线,这个过程中如果你不调用InvalidateRect,必然需要直接GetDC然后强行绘制。但是到底你绘制了什么直线,你必须记录再某个地方,当WM_PAINT被处理的时候,也把这个直线重新绘制一下,否则WM_PAINT会擦除你曾经绘制过的东西

16,471

社区成员

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

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

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