92978b58

Обработчик сообщения WM_ERASEBACKGROUND


Сообщение WM_ERASEBACKGROUND посылается окном Frame Window перед тем, как оно будет рисовать окно Client Window . Если обработчик этого сообщения вернет значение TRUE, содержимое окна Client Window будет стерто (точнее говоря, закрашено системным цветом, выбранным для закрашивания внутренней области окна). Если же обработчик сообщения WM_ERASEBACKGROUND вернет значение FALSE, предполагается, что этот обработчик выполнит закрашивание внутренней области окна Frame Window самостоятельно. Именно такая обработка сообщения WM_ERASEBACKGROUND выполняется по умолчанию функцией WinDefWindowProc .

Заметим, что вместе с этим сообщением в первом параметре mp1 передается идентификатор пространства отображения для окна Frame Window . Этот идентификатор не следует использовать для закраски окна Client Window , так как сообщение WM_ERASEBACKGROUND передается только в том случае, если необходимо перерисовать окно Frame Window.

Может возникнуть такая ситуация, когда содержимое окна Client Window оказалось испорченным, например, в результате размещения там другого окна, а окно Frame Window не изменилось. В этом случае сообщение WM_ERASEBACKGROUND не будет записано в очередь приложения. Поэтому для закрашивания окна Client Window мы использовали обработчик сообщения WM_PAINT .



Содержание раздела