Selezione di un oggetto grafico in un contesto di dispositivo
L'argomento è relativo a utilizzare oggetti grafici nel contesto di dispositivo di una finestra. Dopo avere creare un oggetto drawing, è necessario selezionarlo nel contesto di dispositivo anziché l'oggetto predefinito memorizzato presente:
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". Ovvero verrà eliminata dalla funzione membro di OnIdle di classe CWinApp la successiva esecuzione del programma ottiene il tempo di inattività. Mentre si utilizza l'oggetto restituito da SelectObject in una singola funzione senza restituire il controllo al ciclo di messaggi principale, non sarà problema.