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