Výběr grafického objektu v kontextu zařízení
Toto téma se týká použití grafických objektů v kontextu zařízení okna. Po vytvoření nakresleného objektu ho musíte vybrat do kontextu zařízení místo výchozího objektu uloženého tam:
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
}
}
Životnost grafických objektů
Grafický objekt vrácený objektem SelectObject je "dočasný". To znamená, že členová funkce OnIdle třídy CWinApp
bude odstraněna při příštím získání programu nečinný čas. Pokud použijete objekt vrácený SelectObject
v jedné funkci bez vrácení ovládacího prvku do hlavní smyčky zprávy, nebudete mít žádný problém.