掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DeleteObject()やDeleteDC()の呼び出しが必要な場合 (ID:67046)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になります.あるサイトを参考にメモリDCの勉強をしているのですが,DeleteObject()やDeleteDC()の呼び出しがどういう場合に必要なのか わかりません。MSDNを見てもどういう場合に呼び出しが必要か明確に書いて ないようです。 質問したいことは、下記のコードに関する以下の点です。 (1) 参考にしたサイトによると、①でビットマップオブジェクトをnewして ②のpBMP->DeleteObject()でビットマップオブジェクトを解放すると あったのですが、解放は③のdelete pBMPで行なうべきではないで しょうか? (2) CBitmapオブジェクトのデストラクタの中にはDeleteObject()が記述され ているのでしょうか?記述されているのならDeleteObject()の呼び出しは必要 ないように思うのですが。それとも、CreateCompatibleBitmap()を呼び出した 場合には必ずDeleteobject()を呼び出すことになっているのでしょうか? (3) ④のDeleteDC()もデストラクタ中に記述されているなら呼び出す必要 がないと思いますが。 環境はVC++2005、MFCです。よろしくお願い致します。 void CmdcView::OnDraw(CDC* pDC) { ... CDC mDC; mDC.CreateCompatibleDC(pDC); CBitmap *pBMP, *pOldBMP; pBMP=new CBitmap; // ① pBMP->CreateCompatibleBitmap(pDC, 256, 128); pOldBMP=mDC.SelectObject(pBMP); mDC.FillSolidRect(0,0,256,128,RGB(255,0,0)); pDC->BitBlt(100,100,256,128,&mDC,0,0,SRCCOPY); mDC.SelectObject(pOldBMP); pBMP->DeleteObject(); // ② delete pBMP; // ③ mDC.DeleteDC() // ④ }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.