Wybieranie obiektu graficznego do kontekstu urządzenia
Ten temat dotyczy używania obiektów graficznych w kontekście urządzenia okna. Po utworzeniu obiektu rysunkowego należy wybrać go w kontekście urządzenia zamiast przechowywanego tam obiektu domyślnego:
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
}
}
Okres istnienia obiektów graficznych
Obiekt graficzny zwracany przez element SelectObject jest "tymczasowy". Oznacza to, że zostanie on usunięty przez funkcję składową OnIdle klasy CWinApp
przy następnym czasie bezczynności programu. Tak długo, jak używasz obiektu zwróconego przez SelectObject
w jednej funkcji bez zwracania kontrolki do głównej pętli komunikatów, nie będziesz mieć problemu.