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 |
|
Consulte también
-
Referencia
-
Otros recursos