何时在窗口中绘制

【勇芳软件工作室】汉化HomePreviousNext

一个应用程序在多个时间画一个窗口:当首次创建一个窗口时,当改变窗口的大小时,当窗口从另一个窗口移动时,当窗口最小化或最大化时,当从打开的文件显示数据时,以及当滚动,改变或选择显示数据的一部分时。

Windows管理诸如移动和调整窗口大小的操作。如果操作影响窗口的内容,Windows会将窗口的受影响部分标记为可以进行更新,并在下一个机会向窗口的窗口过程发送WM_PAINT消息。该消息是向应用程序发出信号,以确定必须更新的内容并执行必要的绘图。

某些操作由应用程序管理,例如显示打开的文件并选择显示的数据。对于这些操作,应用程序可以标记用于更新受该操作影响的窗口的部分,导致在下一次机会发送WM_PAINT消息。如果一个操作需要立即反馈,应用程序可以在执行操作时绘制,而不必等待WM_PAINT。例如,典型的应用程序突出显示用户选择的区域,而不是等待下一个WM_PAINT消息来更新该区域。

在所有情况下,应用程序可以在创建窗口后绘制窗口。要在窗口中绘制,应用程序必须首先检索窗口的显示DC的句柄。理想情况下,应用程序在处理WM_PAINT消息期间执行大部分绘图操作。在这种情况下,应用程序通过调用BeginPaint功能检索显示DC。如果应用程序在任何其他时间(例如WinMain内)或在处理键盘或鼠标消息期间绘制,则会调用GetDCGetDCEx功能来检索显示器DC。