Visualizzare contesti di dispositivo
Un'applicazione ottiene un controller di dominio di visualizzazione chiamando la funzione BeginPaint, GetDC o GetDCEx e identificando la finestra in cui verrà visualizzato l'output corrispondente. In genere, un'applicazione ottiene un controller di dominio di visualizzazione solo quando deve disegnare nell'area client. Tuttavia, è possibile ottenere un contesto di dispositivo finestra chiamando la funzione GetWindowDC . Al termine del disegno, l'applicazione deve rilasciare il controller di dominio chiamando la funzione EndPaint o ReleaseDC .
Esistono cinque tipi di controller di dominio per le visualizzazioni video:
- Classe
- Comuni
- Privato
- Finestra
- Parent
Contesti di dispositivo di classe
I contesti di dispositivo di classe sono supportati rigorosamente per la compatibilità con le versioni a 16 bit di Windows. Quando si scrive l'applicazione, evitare di usare il contesto di dispositivo della classe; usare invece un contesto di dispositivo privato.
Contesti di dispositivo comuni
I contesti di dispositivo comuni vengono visualizzati controller di dominio gestiti in una cache speciale dal sistema. I contesti di dispositivo comuni vengono usati nelle applicazioni che eseguono operazioni di disegno poco frequenti. Prima che il sistema restituisca l'handle del controller di dominio, inizializza il contesto di dispositivo comune con oggetti, attributi e modalità predefiniti. Le operazioni di disegno eseguite dall'applicazione usano queste impostazioni predefinite, a meno che non venga chiamata una delle funzioni GDI per selezionare un nuovo oggetto, modificare gli attributi di un oggetto esistente o selezionare una nuova modalità.
Poiché esiste solo un numero limitato di contesti di dispositivo comuni, un'applicazione deve rilasciarle al termine del disegno. Quando l'applicazione rilascia un contesto di dispositivo comune, eventuali modifiche ai dati predefiniti vengono perse.
Contesti di dispositivo privati
I contesti di dispositivo privati sono controller di dominio che, a differenza dei contesti di dispositivo comuni, mantengono le modifiche ai dati predefiniti anche dopo che un'applicazione le rilascia. I contesti di dispositivo privati vengono usati nelle applicazioni che eseguono numerose operazioni di disegno, ad esempio applicazioni CAD (Computer-Aided Design), applicazioni di pubblicazione desktop, applicazioni di disegno e disegno e così via. I contesti di dispositivo privati non fanno parte della cache di sistema e pertanto non devono essere rilasciati dopo l'uso. Il sistema rimuove automaticamente un contesto di dispositivo privato dopo che l'ultima finestra di tale classe è stata eliminata definitivamente.
Un'applicazione crea un contesto di dispositivo privato specificando prima di tutto lo stile della classe finestra CS_OWNDC quando inizializza il membro di stile della struttura WNDCLASS e chiama la funzione RegisterClass . Per altre informazioni sulle classi finestra, vedere Classi finestra.
Dopo aver creato una finestra con lo stile di CS_OWNDC, un'applicazione può chiamare la funzione GetDC, GetDCEx o BeginPaint una volta per ottenere un handle che identifica un contesto di dispositivo privato. L'applicazione può continuare a usare questo handle (e il controller di dominio associato) fino a quando non elimina la finestra creata con questa classe. Le modifiche apportate agli oggetti grafici e ai relativi attributi o modalità grafiche vengono mantenute dal sistema fino a quando la finestra non viene eliminata.
Contesti di dispositivo finestra
Un contesto di dispositivo finestra consente a un'applicazione di disegnare ovunque in una finestra, inclusa l'area non client. I contesti di dispositivo finestra vengono in genere usati dalle applicazioni che elaborano i messaggi WM_NCPAINT e WM_NCACTIVATE per le finestre con aree personalizzate non client. L'uso di un contesto di dispositivo finestra non è consigliato per altri scopi. Per altre informazioni; vedere GetWindowDC.
Contesti di dispositivo padre
Un contesto di dispositivo padre consente a un'applicazione di ridurre al minimo il tempo necessario per configurare l'area di ritaglio per una finestra. Un'applicazione usa in genere contesti di dispositivo padre per velocizzare il disegno per le finestre di controllo senza richiedere un contesto di dispositivo privato o di classe. Ad esempio, il sistema usa contesti di dispositivo padre per i controlli di scelta rapida e modifica. I contesti di dispositivo padre sono destinati all'uso solo con finestre figlio, mai con finestre di primo livello o popup. Per altre informazioni; vedere Contesti dispositivo di visualizzazione padre.