WM_CTLCOLORBTN сообщение

Сообщение WM_CTLCOLORBTN отправляется в родительское окно кнопки перед рисованием кнопки. Родительское окно может изменять цвета текста и фона кнопки. Однако только нарисованные владельцем кнопки реагируют на то, что родительское окно обрабатывает это сообщение.

WM_CTLCOLORBTN

    WPARAM wParam;
    LPARAM lParam; 

Параметры

wParam

HDC, указывающий дескриптор контекста отображения для кнопки.

lParam

HWND, указывающий дескриптор кнопки.

Возвращаемое значение

Если приложение обрабатывает это сообщение, оно должно вернуть дескриптор в кисть. Система использует кисть для рисования фона кнопки.

Комментарии

Если приложение возвращает созданную кисть (например, с помощью функции CreateSolidBrush или CreateBrushIndirect ), оно должно освободить кисть. Если приложение возвращает системную кисть (например, полученную функцией GetStockObject или GetSysColorBrush ), приложению не нужно освобождать кисть.

По умолчанию функция DefWindowProc выбирает системные цвета по умолчанию для кнопки. Кнопки со стилями BS_PUSHBUTTON, BS_DEFPUSHBUTTON или BS_PUSHLIKE не используют возвращаемую кисть. Кнопки с этими стилями всегда рисуются с использованием системных цветов по умолчанию. Для кнопок рисования требуется несколько разных кистей : лицевая, выделенная и тень, но WM_CTLCOLORBTN сообщение позволяет вернуть только одну кисть. Чтобы обеспечить пользовательский внешний вид для кнопок, используйте кнопку, нарисованную владельцем. Дополнительные сведения см. в разделе Создание элементов управления Owner-Drawn.

Сообщение WM_CTLCOLORBTN никогда не передается между потоками. Он отправляется только в пределах одного потока.

Цвет текста проверка поля или переключателя применяется к прямоугольнику или кнопке, к проверка метки и тексту. Прямоугольник фокуса для этих кнопок остается системным цветом по умолчанию (обычно черный). Цвет текста поля группы применяется к тексту, но не к строке, определяющей поле. Цвет текста кнопки нажатия применяется только к прямоугольнику фокуса; не влияет на цвет текста.

Если это сообщение обрабатывается процедурой диалогового окна, она должна привести нужное возвращаемое значение к INT_PTR и вернуть значение напрямую. Если процедура диалогового окна возвращает значение FALSE, то выполняется обработка сообщений по умолчанию. Значение DWL_MSGRESULT, заданное функцией SetWindowLong , игнорируется.

Требования

Требование Значение
Минимальная версия клиента
Windows Vista [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]
Заголовок
Winuser.h (включая Windows.h)

См. также раздел

Другие ресурсы

RealizePalette

ВыберитеPalette