Contesti di dispositivo
Un contesto di dispositivo è una struttura di dati di Windows contenente informazioni sugli attributi di disegno di un dispositivo, ad esempio uno schermo o una stampante. Tutte le chiamate di disegno vengono effettuate tramite un oggetto contesto dispositivo, che incapsula le API di Windows per le linee di disegno, le forme e il testo. I contesti di dispositivo consentono il disegno indipendente dal dispositivo in Windows. I contesti di dispositivo possono essere usati per disegnare sullo schermo, sulla stampante o su un metafile.
Gli oggetti CPaintDC incapsulano il linguaggio comune di Windows, chiamando la BeginPaint
funzione, quindi disegnando nel contesto del dispositivo, quindi chiamando la EndPaint
funzione . Il CPaintDC
costruttore chiama BeginPaint
l'utente e il distruttore chiama EndPaint
. Il processo semplificato consiste nel creare l'oggetto CDC , disegnare e quindi eliminare definitivamente l'oggetto CDC
. Nel framework gran parte di questo processo è automatizzato. In particolare, la OnDraw
funzione viene passata a un CPaintDC
oggetto già preparato (tramite OnPrepareDC
) ed è sufficiente disegnare in esso. Viene eliminato definitivamente dal framework e il contesto di dispositivo sottostante viene rilasciato a Windows al ritorno dalla chiamata alla OnDraw
funzione.
Gli oggetti CClientDC incapsulano l'uso di un contesto di dispositivo che rappresenta solo l'area client di una finestra. Il CClientDC
costruttore chiama la GetDC
funzione e il distruttore chiama la ReleaseDC
funzione . Gli oggetti CWindowDC incapsulano un contesto di dispositivo che rappresenta l'intera finestra, inclusa la cornice.
Gli oggetti CMetaFileDC incapsulano il disegno in un metafile di Windows. A differenza del CPaintDC
passato a OnDraw
, in questo caso è necessario chiamare personalmente OnPrepareDC .
Disegno del mouse
La maggior parte dei disegni in un programma framework, e quindi la maggior parte del lavoro del contesto di dispositivo, viene eseguita nella funzione membro della OnDraw
visualizzazione. Tuttavia, è comunque possibile usare oggetti contesto dispositivo per altri scopi. Ad esempio, per fornire feedback di rilevamento per lo spostamento del mouse in una visualizzazione, è necessario disegnare direttamente nella visualizzazione senza attendere OnDraw
che venga chiamato.
In questo caso, è possibile usare un oggetto contesto di dispositivo CClientDC per disegnare direttamente nella visualizzazione.