Значениями ряда атрибутов контекста устройства являются объекты GDI. Как отмечалось ранее, в вызовах методов, рисующих фигуры на экране, многие параметры не указываются, а берутся из атрибутов контекста устройства. Чтобы эти параметры отличались от установленных в контексте устройства по умолчанию, необходимо:
Последовательность этих действий иллюстрируется примером:
void CMyView::OnDraw(CDC* pDC) { CPen Pen; if(Pen.CreatePen(PS_SOLID,2,RGB(0,0,0)) { // сохранение старого и установление нового значения атрибута CPen* pOldPen=pDC->SelectObject(&Pen); // выполнение необходимых действий pDC->MoveTo(....); pDC->LineTo(....); // восстановление старого значения атрибута pDC->SelectObject(pOldPen); } }
Метод SelectObject в качестве результата возвращает указатель на текущее перо и делает текущим перо, указанное в качестве параметра метода.