グラフィック オブジェクトをデバイス コンテキストに選択する
更新 : 2007 年 11 月
ここでは、ウィンドウのデバイス コンテキストに格納されているグラフィック オブジェクトを使用する方法について説明します。描画用のオブジェクトを作成したら、それをデバイス コンテキストに選択して既定のオブジェクトと置き換える必要があります。
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 が返すオブジェクトを使用している限り、問題は発生しません。