Advertisement

《Windows程序设计》读书笔四:文本输出

阅读量:

客户区指的是应用程序窗口中除去标题栏、边框、菜单栏、工具栏、状态栏以及滚动条等元素后所剩余的区域。该区域是程序用于绘制图形并以可视化方式向用户传递信息的空间。

4.1 绘制和重绘

Windows系统是一个基于消息驱动的架构,它通过两种机制将事件告知应用程序:一是将消息存入应用程序的消息队列;二是直接向窗口过程发送对应的消息。

4.1.1 WM_PAINT消息

在进入消息循环之前调用UpdateWindow函数,该函数会向窗口过程发送初始的WM_PAINT消息,以提示其对客户区进行绘制操作。

以下几种情况可能会触发窗口接收到WM_PAINT消息:

  • 用户移动了窗口,使原本被遮挡的部分重新显现出来。

  • 用户调整了窗口尺寸(前提是窗口类型设置为CS_HREDRAW 和 CS_VREDRAW)。

  • 程序调用了ScrollWindow或ScrollDC函数对客户区内容进行滚动操作。

  • 调用InvalidateRect 或InvalidateRgn函数时生成WM_PAINT消息。

在某些情况下,Windows系统会尝试保留被遮盖的客户区内容以便后续恢复使用,但并非所有情况都能成功。以下情形下Windows有可能会发送一条WM_PAINT消息:

  • Windows关闭了一个部分覆盖当前窗口的对话框或提示框。

  • 下拉菜单展开后又被收起。

  • 显示

全部评论 (0)

还没有任何评论哟~