迷えるMFC使い達へ:CImageとHBITMAP

PFU Happy Hacking Keyboard Lite2 日本語配列かな印字なし USBキーボード ブラック PD-KB220B/U

PFU Happy Hacking Keyboard Lite2 日本語配列かな印字なし USBキーボード ブラック PD-KB220B/U

プログラムを作ろう!  MS VISUAL C++ 2010 入門 (MSDNプログラミングシリーズ)

プログラムを作ろう! MS VISUAL C++ 2010 入門 (MSDNプログラミングシリーズ)

日経ソフトウエア 2010年 09月号 [雑誌]

日経ソフトウエア 2010年 09月号 [雑誌]

またMFCのリソース管理周りの話。CImageクラスには「HBITMAP()」という変換演算子が用意されており、これでCImageからHBITMAPへキャスト構文で変換できるわけだが、このときも変換後に取り出したHBITMAPを「DeleteObject」してやらないとどんどんメモリーリークを起こす。明示的なエラーや例外として出るものではないので怖すぎ。こういうところを例外とかで処理できるようにしとけといいたい。しかもCImage::Destroyを呼んだ後にやらないといけないようだ・・・はぁ?紛らわしすぎでしょ

 CImage img;
  img.Create( 100, 100, 32 );
  HBITMAP hbm = (HBITMAP)img;
  img.Destroy(); //ここと
  DeleteObject(hbm); //ここの順番 ウザ杉