Нерабочая область


Система посылает сообщение WM_NCPAINT окну всякий раз, когда часть нерабочей области окна, такая как область заголовка, строка меню или рамка окна, должны обновиться. Система может также послать и другие сообщения, чтобы предписать окну обновить часть его рабочей области; например, когда окно становится активным или неактивным, оно отправляет сообщение WM_NCACTIVATE, чтобы обновить свою область заголовка. Вообще, обработка этих сообщений для стандартных окон не рекомендуется, потому что приложение должно быть в состоянии рисовать все затребованные части нерабочей области окна. Поэтому большинство приложений передает эти сообщения в функцию DefWindowProc для обработки значения по умолчанию.

Приложение, которое создает пользовательские нерабочие области для своих окон, должно обработать эти сообщения. Делая так, программа должна использовать контекст устройства окна (window device context), чтобы выполнить рисование в окне. Контекст устройства окна позволяет приложению рисовать во всех частях окна, включая нерабочую область. Прикладная программа извлекает контекст устройства окна при помощи использования функции GetWindowDC или GetDCEx и, когда рисование завершается полностью, она должна освободить контекст устройства окна при помощи использования функции ReleaseDC.

Система поддерживает обновляемый регион нерабочей области. Когда приложение получает сообщение WM_NCPAINT, параметр wParam содержит в себе дескриптор региона, определяющий размеры обновляемого региона. Прикладная программа может использовать дескриптор, чтобы объединить обновляемый регион с регионом отсечения для контекста устройства окна. Система автоматически не объединяет обновляемый регион, извлекая контекст устройства окна, если приложение не использует GetDCEx и не указывает, и дескриптор региона, и флажок DCX_INTERSECTRGN. Если приложение не объединяет обновляемый регион, то обрезаются только операции рисования, которые по каким-то обстоятельствам перешли границы окна. Приложение не ответственно за очистку обновляемого региона, независимо от того, использует ли оно этот регион.

Если приложение обрабатывает сообщение WM_NCACTIVATE, то после обработки его должно возвратиться значение TRUE, чтобы предписать системе завершить работу по изменению активного окна. Если окно свернуто, когда программа получает сообщение WM_NCACTIVATE, то оно должно передать это сообщение в функцию DefWindowProc. В таких случаях, функция обработки сообщений по умолчанию перерисовывает ярлык для значка.

Назад в оглавление
На главную страницу
Переведено 27.12.2010 22:06 ©Copyright V. Sokovikov
Hosted by uCoz