ビットマップを破棄するときは、CDCから選択解除したいのですが、
CDC::DeleteDC()をつかえばよろしいのでしょか?
CBitmap wBitmap ;
wBitmap.CreateCompatibleBitmap(pDC,1024,512) ; //カンバスを作成
CDC dc;
dc.CreateCompatibleDC(pDC); // メモリデバイスコンテキストを作成します。
dc.SelectObject(&wBitmap) ; // カンバスを選択
CRect wRect(0,0,200,200) ;// 矩形領域を設定
CRgn wRgn ;
CBrush wBrush ;
wBrush.CreateSolidBrush(0xff0000) ;// ブラシの色に青を選択
wRgn.CreateEllipticRgn(0,0,wRect.right,wRect.bottom) ;//(楕)円を表示
dc.SelectObject(&wBrush) ;
dc.PaintRgn(&wRgn) ;
pDC->BitBlt(0, 0, wRect.right, wRect.bottom, &dc, 0, 0, SRCCOPY);
// メモリデバイスコンテキストを削除します。
dc.DeleteDC();// これで、カンバスの選択をはずしたことになるのでしょうか?
デバイスコンテキストに選択したGDIオブジェクトは、
すべて破棄する前に元に戻さなければなりません。
// ビットマップを選択し、もともと選択されていたビットマップを保持しておく。
COldBitmap* pOldBmp = dc.SelectObject(&wBitmap) ;
...
// もともとのビットマップを選択しなおす。自分が選択したものは解除される。
dc.SelectObject(pOldBmp);
dc.DelecteDC();
ブラシも(ペンやフォントなども)同様です。
解除しないと破棄できず、リソースリークします。
選択するものが多すぎて一つずつ元に戻すのが面倒でしたら、
SaveDC()とRestoreDC()を使う方法もあります。