Condividi tramite


Sfondo finestra

Lo sfondo della finestra è il colore o il motivo utilizzato per riempire l'area client prima che una finestra inizi a disegnare. Lo sfondo della finestra copre qualsiasi elemento sullo schermo prima che la finestra sia stata spostata lì, cancellando le immagini esistenti e impedendo che il nuovo output dell'applicazione venga misto con informazioni non correlate.

Il sistema disegna lo sfondo per una finestra o offre alla finestra la possibilità di farlo inviando un messaggio WM_ERASEBKGND quando l'applicazione chiama BeginPaint. Se un'applicazione non elabora il messaggio ma la passa a DefWindowProc, il sistema cancella lo sfondo riempindolo con il motivo nel pennello di sfondo specificato dalla classe della finestra. Se il pennello non è valido o la classe non ha alcun pennello di sfondo, il sistema imposta il membro fErase nella struttura PAINTSTRUCT restituito da BeginPaint , ma non esegue altre azioni. L'applicazione ha quindi la possibilità di disegnare lo sfondo della finestra, se necessario.

Se elabora WM_ERASEBKGND, l'applicazione deve usare il parametro wParam del messaggio per disegnare lo sfondo. Questo parametro contiene un handle per il contesto del dispositivo di visualizzazione per la finestra. Dopo aver disegnato lo sfondo, l'applicazione deve restituire un valore diverso da zero. Ciò garantisce che BeginPaint non imposti erroneamente il membro fErase della struttura PAINTSTRUCT su un valore diverso da zero (che indica che lo sfondo deve essere cancellato) quando l'applicazione elabora il messaggio di WM_PAINT successivo.

Un'applicazione può definire un pennello di sfondo della classe assegnando un handle di pennello o un valore di colore di sistema al membro hbrBackground della struttura WNDCLASS durante la registrazione della classe con la funzione RegisterClass . La funzione GetStockObject o CreateSolidBrush può essere usata per creare un handle di pennello. Un valore di colore di sistema può essere uno di quelli definiti per la funzione SetSysColors . Il valore deve essere aumentato di uno prima che venga assegnato al membro.

Un'applicazione può elaborare il messaggio WM_ERASEBKGND anche se è definito un pennello di sfondo della classe. Questo è tipico nelle applicazioni che consentono all'utente di modificare il colore o il motivo di sfondo della finestra per una finestra specificata senza influire su altre finestre nella classe . In questi casi, l'applicazione non deve passare il messaggio a DefWindowProc.

Non è necessario per un'applicazione allineare i pennelli, perché il sistema disegna il pennello usando l'origine della finestra come punto di riferimento. Dato questo, l'utente può spostare la finestra senza influire sull'allineamento dei pennelli del motivo.