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 |
|
Vedi anche
-
Riferimento
-
Altre risorse