将图形对象选入设备上下文
本主题适用于在窗口的设备上下文中使用图形对象。 创建绘图对象后,必须将其选入设备上下文,以取代存储在其中的默认对象:
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
}
}
图形对象的生存期
SelectObject 返回的图形对象是“临时的”。也就是说,下次程序空闲时,类 CWinApp
的 OnIdle 成员函数将删除该图形对象。 只要使用单一函数中的 SelectObject
返回的对象,而不将控件返回到主消息循环,就不会出现任何问题。