绘制无WM_PAINT消息

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

虽然应用程序在WM_PAINT消息正在处理时执行大多数绘图操作,但是有时应用程序直接在窗口中绘制而不依赖于WM_PAINT消息更有效。当用户需要即时反馈时,例如在选择文本并拖动或调整对象大小时,这可能很有用。在这种情况下,应用程序通常在处理键盘或鼠标消息时绘制。

要绘制窗口而不使用WM_PAINT消息,应用程序使用GetDCGetDCEx函数来检索窗口的显示DC。使用显示器DC,应用程序可以在窗口中绘制,并避免进入其他窗口。当应用程序完成绘图时,它调用ReleaseDC函数来释放显示DC以供其他应用程序使用。

在不使用WM_PAINT消息的情况下绘图时,应用程序通常不会使窗口无效。相反,它采用这样一种方式,它可以轻松地恢复窗口并移除图形。例如,当用户选择文本或对象时,应用程序通常通过翻转已经在窗口中的任何内容来绘制选择。应用程序可以通过简单地反转来删除选择并恢复窗口的原始内容。

应用程序负责仔细管理对窗口所做的任何更改。特别地,如果应用程序绘制选择并发生干预的WM_PAINT消息,则应用程序必须确保在消息期间完成的任何绘图都不会损坏选择。为了避免这种情况,许多应用程序删除选择,执行常规绘图操作,然后在绘图完成时恢复选择。