1

MFC でのストロークの描画についていくつか質問があります。クラス CStroke が事前に宣言されているとします。サンプルコードを以下に示します。

BOOL CStroke::DrawStroke(CDC* pDC)
{
    CPen penStroke;
    if ( !penStroke.CreatePen(PS_SOLID, m_nPenWidth, m_color) )
        return FALSE;
    CPen *pOldPen = pDC->SelectObject(&penStroke);
    pDC->MoveTo(m_pointArray[0]);

    for( int i = 0; i < m_pointArray.GetSize(); i++ )
    {
        pDC->LineTo(m_pointArray[i]);
    }

    pDC->SelectObject(pOldPen);
    return TRUE;
}

私の質問は次のとおりです。

  1. なぜ pOldPen が必要なのですか?
  2. pDC->SelectObject(pOldPen)最後に pOldPen を選択する必要があるのはなぜですか?
4

1 に答える 1