掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DeleteObject()やDeleteDC()の呼び出しが必要な場合 (ID:67039)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> (1) 参考にしたサイトによると、①でビットマップオブジェクトをnewして > ②のpBMP->DeleteObject()でビットマップオブジェクトを解放すると > あったのですが、解放は③のdelete pBMPで行なうべきではないで > しょうか? ①のnewと③のdeleteが対になっているのは正しいのですが、②の DeleteObject()は、①の直後のCreateCompatibleBitmapに対応しています。 MFCのCBitmap::CreateCompatibleBitmapの説明には明示的には書いてありま せんがグローバルのCreateCompatibleBitmapの説明には不用になったら DeleteObjectしろ、と"英語"で書いてあります。 > (2) CBitmapオブジェクトのデストラクタの中にはDeleteObject()が記述され > ているのでしょうか? 記述されていないと思います。 > 記述されているのならDeleteObject()の呼び出しは必要 > ないように思うのですが。それとも、CreateCompatibleBitmap()を呼び出した > 場合には必ずDeleteobject()を呼び出すことになっているのでしょうか? CBitmapオブジェクトの寿命とCreateCompatibleBitmap-DeleteObject間の寿命 が異なり、DeleteObject()を行なわないと「非常に貴重」なWindowsのリソース をくってしまうため、明示的にDeleteObject()を呼び出すことになっています。 > (3) ④のDeleteDC()もデストラクタ中に記述されているなら呼び出す必要 > がないと思いますが。 上述したのと同じ理由です。 # MFCはWindows APIの非常に薄いラッパーなので、デストラクタで後始末可 # 能と思われる処理も明示的に行なう必要が多々あります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.