Selezione di un oggetto grafico in un contesto di dispositivo
Questo argomento si applica all'uso di oggetti grafici nel contesto di dispositivo di una finestra. Dopo aver creato un oggetto di disegno, è necessario selezionarlo nel contesto del dispositivo al posto dell'oggetto predefinito archiviato in questa posizione:
void CNewView::OnDraw(CDC* pDC)
{
CPen penBlack; // Construct it, then initialize
if (penBlack.CreatePen(PS_SOLID, 2, RGB(0, 0, 0)))
{
// Select it into the device context
// Save the old pen at the same time
CPen* pOldPen = pDC->SelectObject(&penBlack);
// Draw with the pen
pDC->MoveTo(20, 20);
pDC->LineTo(40, 40);
// Restore the old pen to the device context
pDC->SelectObject(pOldPen);
}
else
{
// Alert the user that resources are low
}
}
Durata degli oggetti grafici
L'oggetto grafico restituito da SelectObject è "temporaneo". Ciò significa che verrà eliminato dalla funzione membro OnIdle della classe CWinApp
la volta successiva che il programma ottiene il tempo di inattività. Se si usa l'oggetto restituito da SelectObject
in una singola funzione senza restituire il controllo al ciclo di messaggi principale, non si avrà alcun problema.