Compartir vía


mensaje de WM_CTLCOLORSTATIC

Un control estático, o un control de edición que es de solo lectura o deshabilitado, envía el mensaje WM_CTLCOLORSTATIC a su ventana primaria cuando el control está a punto de dibujarse. Al responder a este mensaje, la ventana primaria puede usar el identificador de contexto del dispositivo especificado para establecer los colores de primer plano y fondo del texto del control estático.

Una ventana recibe este mensaje a través de la función WindowProc.

WM_CTLCOLORSTATIC

    WPARAM wParam;
    LPARAM lParam; 

Parámetros

wParam

Controle el contexto del dispositivo para la ventana de control estático.

lParam

Identificador del control estático.

Valor devuelto

Si una aplicación procesa este mensaje, el valor devuelto es un identificador de un pincel que el sistema usa para pintar el fondo del control estático.

Observaciones

Si la aplicación devuelve un pincel que creó (por ejemplo, mediante la función CreateSolidBrush o CreateBrushIndirect ), la aplicación debe liberar el pincel. Si la aplicación devuelve un pincel del sistema (por ejemplo, uno recuperado por la función GetStockObject o GetSysColorBrush ), la aplicación no necesita liberar el pincel.

De forma predeterminada, la función DefWindowProc selecciona los colores predeterminados del sistema para el control estático.

Puede establecer el color de fondo del texto de un control de edición deshabilitado, pero no puede establecer el color de primer plano del texto. El sistema siempre usa COLOR_GRAYTEXT.

Los controles de edición que no son de solo lectura o deshabilitados no envían el mensaje WM_CTLCOLORSTATIC ; en su lugar, envían el mensaje WM_CTLCOLOREDIT .

El mensaje WM_CTLCOLORSTATIC nunca se envía entre subprocesos; se envía solo dentro del mismo subproceso.

Si un procedimiento de cuadro de diálogo controla este mensaje, debe convertir el valor devuelto deseado en un INT_PTR y devolver el valor directamente. Si el procedimiento del cuadro de diálogo devuelve FALSE, se realiza el control de mensajes predeterminado. Se omite el valor DWL_MSGRESULT establecido por la función SetWindowLong .

Ejemplos

En el siguiente ejemplo de C++ se muestra cómo establecer los colores de primer plano y fondo de texto de un control estático en respuesta al mensaje de WM_CTLCOLORSTATIC . La hbrBkgnd variable es una variable HBRUSH estática que se inicializa en NULL y almacena el pincel de fondo entre llamadas a WM_CTLCOLORSTATIC. El pincel debe destruirse mediante una llamada a la función DeleteObject cuando ya no es necesario, normalmente cuando se destruye el cuadro de diálogo asociado.

   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;
        }

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado
Winuser.h (incluya Windows.h)

Consulte también

Referencia

WM_CTLCOLORBTN

WM_CTLCOLOREDIT

WM_CTLCOLORLISTBOX

WM_CTLCOLORSCROLLBAR

Otros recursos

DefWindowProc

RealizePalette

SelectPalette

WM_CTLCOLORDLG