Поделиться через


WM_CTLCOLORSTATIC сообщение

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

Окно получает это сообщение через функцию WindowProc .

WM_CTLCOLORSTATIC

    WPARAM wParam;
    LPARAM lParam; 

Параметры

wParam

Обработка контекста устройства для статического окна управления.

lParam

Дескриптор статического элемента управления.

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

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

Комментарии

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

По умолчанию функция DefWindowProc выбирает системные цвета по умолчанию для статического элемента управления.

Можно задать цвет фона текста для отключенного элемента управления редактированием, но нельзя задать цвет переднего плана текста. Система всегда использует COLOR_GRAYTEXT.

Изменить элементы управления, которые не доступны только для чтения или отключены, не отправляют WM_CTLCOLORSTATIC сообщение; вместо этого они отправляют WM_CTLCOLOREDIT сообщение.

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

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

Примеры

В следующем примере C++ показано, как задать цвета переднего плана и фона текста статического элемента управления в ответ на WM_CTLCOLORSTATIC сообщение. Переменная hbrBkgnd представляет собой статическую переменную HBRUSH , которая инициализирована со значением NULL и сохраняет фоновую кисть между вызовами WM_CTLCOLORSTATIC. Кисть должна быть уничтожена вызовом функции DeleteObject , когда она больше не нужна, обычно при уничтожении связанного диалогового окна.

   case WM_CTLCOLORSTATIC:
        {
        HDC hdcStatic = (HDC) wParam;
        SetTextColor(hdcStatic, RGB(255,255,255));
        SetBkColor(hdcStatic, RGB(0,0,0));

        if (hbrBkgnd == NULL)
        {
            hbrBkgnd = CreateSolidBrush(RGB(0,0,0));
        }
        return (INT_PTR)hbrBkgnd;
        }

Требования

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

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

Справочные материалы

WM_CTLCOLORBTN

WM_CTLCOLOREDIT

WM_CTLCOLORLISTBOX

WM_CTLCOLORSCROLLBAR

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

DefWindowProc

RealizePalette

ВыберитеPalette

WM_CTLCOLORDLG