Выбор графического объекта в контексте устройстваSelecting a Graphic Object into a Device Context

Этот раздел относится к использованию графических объектов в контексте устройства окна.This topic applies to using graphic objects in a window's device context. После создания объекта-рисунканеобходимо выбрать его в контексте устройства вместо объекта по умолчанию, хранящегося там:After you create a drawing object, you must select it into the device context in place of the default object stored there:

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
    }
}

Время существования графических объектовLifetime of Graphic Objects

Графический объект, возвращаемый функцией SelectObject , является временным.The graphic object returned by SelectObject is "temporary." Это значит, что он будет удален функцией-членом OnIdle класса CWinApp в следующий раз, когда программа получит время простоя.That is, it will be deleted by the OnIdle member function of class CWinApp the next time the program gets idle time. Если вы используете объект, возвращаемый SelectObject в одной функции, без возврата управления в главный цикл обработки сообщений, проблема не возникает.As long as you use the object returned by SelectObject in a single function without returning control to the main message loop, you will have no problem.

Что вы хотите узнать подробнееWhat do you want to know more about

См. также разделSee also

Графические объектыGraphic Objects