Condividi tramite


Contesti dispositivo di visualizzazione classi

Usando un contesto di dispositivo di classe, un'applicazione può usare un singolo contesto di dispositivo di visualizzazione per ogni finestra appartenente a una classe specificata. I contesti di dispositivo di classe vengono spesso usati con le finestre di controllo disegnate usando gli stessi valori di attributo. Come i contesti di dispositivo privati, i contesti di dispositivo di classe riducono al minimo il tempo necessario per preparare un contesto di dispositivo per il disegno.

Il sistema fornisce un contesto di dispositivo di classe per una finestra se appartiene a una classe window con lo stile CS_CLASSDC. Il sistema crea il contesto di dispositivo durante la creazione della prima finestra appartenente alla classe e quindi usa lo stesso contesto di dispositivo per tutte le finestre create successivamente nella classe . Inizialmente, il contesto di dispositivo della classe ha gli stessi valori predefiniti per gli attributi di un contesto di dispositivo comune, ma l'applicazione può modificarle in qualsiasi momento. Il sistema mantiene tutte le modifiche, ad eccezione dell'area di ritaglio e dell'origine del dispositivo, fino a quando l'ultima finestra della classe non viene eliminata definitivamente. Una modifica apportata per una finestra si applica a tutte le finestre della classe.

Un'applicazione può recuperare l'handle nel contesto del dispositivo della classe usando la funzione GetDC in qualsiasi momento dopo la creazione della prima finestra. L'applicazione può mantenere e usare l'handle senza rilasciarlo perché il contesto del dispositivo di classe non fa parte della cache del contesto di dispositivo di visualizzazione. Se l'applicazione crea un'altra finestra nella stessa classe finestra, l'applicazione deve recuperare nuovamente il contesto di dispositivo della classe. Il recupero del contesto di dispositivo imposta l'origine del dispositivo corretta e l'area di ritaglio per la nuova finestra. Dopo che l'applicazione recupera il contesto di dispositivo della classe per una nuova finestra nella classe, il contesto di dispositivo non può più essere usato per disegnare nella finestra originale senza recuperarlo nuovamente per tale finestra. In generale, ogni volta che deve disegnare in una finestra, un'applicazione deve recuperare in modo esplicito il contesto del dispositivo di classe per la finestra.

Le applicazioni che usano contesti di dispositivo di classe devono sempre chiamare BeginPaint durante l'elaborazione di un messaggio WM_PAINT . La funzione imposta l'origine del dispositivo corretta e l'area di ritaglio per la finestra e incorpora l'area di aggiornamento. L'applicazione deve anche chiamare EndPaint per ripristinare il cursore se BeginPaint lo nasconde. EndPaint non ha alcun altro effetto su un contesto di dispositivo di classe.

Il sistema passa il contesto del dispositivo di classe quando si invia il messaggio WM_ERASEBKGND all'applicazione, consentendo ai valori dell'attributo corrente di influire su qualsiasi disegno eseguito dall'applicazione o dal sistema durante l'elaborazione del messaggio. Come in una finestra con un contesto di dispositivo privato, un'applicazione può usare GetDCEx per forzare il sistema a restituire un contesto di dispositivo comune per la finestra con un contesto di dispositivo di classe.

Non è consigliabile usare contesti di dispositivo di classe.