windows——消息——WM_PAINT

WM_PAINT消息通常在窗口初始化、大小改变、滚动或使用InvalidateRect等函数时触发,用于更新显示区域。无效区域是需要重新绘制的部分,由无效矩形定义。windows会合并多个无效区域并发送一个WM_PAINT,以提高渲染效率。BeginPaint和ValidateRect等函数用于管理和处理无效区域。
摘要由CSDN通过智能技术生成

WM_PAINT

WM_PAINT通知窗口消息处理程序,窗口的全部或部分显示区域需要绘制
windows发送WM_PAINT情况:
  • WinMain进入消息循环之前的初始化期间调用函数UpdateWindow
  • 使用者移动窗口或显示窗口时,窗口中先前被隐藏的区域重现可见
  • 使用者改变窗口大小(如果窗口类别样式有CS_HREDRAW和CS_VREDRAW位flag)
  • 程序使用ScrollWindow或ScrollDC函数滚动显示区域一部分
  • 程序使用InvalidateRect或InvalidateRgn函数可以产生WM_PAINT
在某些情况下,显示区域的一部分被临时覆盖,windows试图保存一个显示区域,并在以后恢复它,但这不一定能成功,windows可能发送WM_PAINT情况:
  • windows擦除覆盖了部分窗口的对话框或消息框
  • 菜单下拉出来,然后被释放
  • 显示工具提示消息
在某些情况下,windows总是保存它所覆盖的显示区域,然后恢复它,因此不会发送WM_PAINT,windows不会发送WM_PAINT情况:
  • 鼠标光标穿越显示区域
  • 图标拖过显示区域
注:显示区域是整个应用程序窗口中未被标题列、窗口边框,以及可选的菜单项、工具列、状态栏和滚动条占据的部分

无效区域

  • 窗口消息处理程序接收到WM_PAINT后,准备更新整个显示区域,但经常只需更新一个较小区域(最常见的是显示区域中的矩形区域),为了渲染性能,只绘制需重新绘制那部分ÿ
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值