Condividi tramite


messaggio di WM_CTLCOLORSTATIC

Un controllo statico o un controllo di modifica di sola lettura o disabilitato invia il messaggio di WM_CTLCOLORSTATIC alla finestra padre quando il controllo sta per essere disegnato. Rispondendo a questo messaggio, la finestra padre può usare l'handle del contesto di dispositivo specificato per impostare i colori di primo piano e sfondo del testo del controllo statico.

Una finestra riceve questo messaggio tramite la relativa funzione WindowProc .

WM_CTLCOLORSTATIC

    WPARAM wParam;
    LPARAM lParam; 

Parametri

wParam

Gestire il contesto del dispositivo per la finestra di controllo statica.

lParam

Handle per il controllo statico.

Valore restituito

Se un'applicazione elabora questo messaggio, il valore restituito è un handle per un pennello utilizzato dal sistema per disegnare lo sfondo del controllo statico.

Commenti

Se l'applicazione restituisce un pennello creato, ad esempio usando la funzione CreateSolidBrush o CreateBrushIndirect , l'applicazione deve liberare il pennello. Se l'applicazione restituisce un pennello di sistema ,ad esempio uno recuperato dalla funzione GetStockObject o GetSysColorBrush , l'applicazione non deve liberare il pennello.

Per impostazione predefinita, la funzione DefWindowProc seleziona i colori di sistema predefiniti per il controllo statico.

È possibile impostare il colore di sfondo del testo di un controllo di modifica disabilitato, ma non è possibile impostare il colore di primo piano del testo. Il sistema usa sempre COLOR_GRAYTEXT.

I controlli di modifica non di sola lettura o disabilitati non inviano il messaggio di WM_CTLCOLORSTATIC ; invece inviano il messaggio di WM_CTLCOLOREDIT .

Il messaggio WM_CTLCOLORSTATIC non viene mai inviato tra thread; viene inviato solo all'interno dello stesso thread.

Se una routine della finestra di dialogo gestisce questo messaggio, deve eseguire il cast del valore restituito desiderato in un INT_PTR e restituire direttamente il valore. Se la procedura della finestra di dialogo restituisce FALSE, viene eseguita la gestione predefinita dei messaggi. Il valore DWL_MSGRESULT impostato dalla funzione SetWindowLong viene ignorato.

Esempio

Nell'esempio C++ seguente viene illustrato come impostare i colori di primo piano e di sfondo del testo di un controllo statico in risposta al messaggio WM_CTLCOLORSTATIC . La hbrBkgnd variabile è una variabile HBRUSH statica inizializzata su NULL e archivia il pennello di sfondo tra le chiamate a WM_CTLCOLORSTATIC. Il pennello deve essere eliminato definitivamente da una chiamata alla funzione DeleteObject quando non è più necessario, in genere quando la finestra di dialogo associata viene eliminata definitivamente.

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

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista [solo app desktop]
Server minimo supportato
Windows Server 2003 [solo app desktop]
Intestazione
Winuser.h (include Windows.h)

Vedi anche

Riferimento

WM_CTLCOLORBTN

WM_CTLCOLOREDIT

WM_CTLCOLORLISTBOX

WM_CTLCOLORSCROLLBAR

Altre risorse

DefWindowProc

RealizePalette

SelezionaPalette

WM_CTLCOLORDLG