CreateDIBSectionした後のメモリ解放ができません

[戻る]
鳴水 2006/12/12(火) 17:19:59
スクリーンキャプチャしてその画像をDirectXで表示しようとしているのですが
スクリーンキャプチャを行う度にコミットチャージが増えていってしまいます、
これを解決するにはどうすればいいのでしょうか?

開発環境 Windows XP SP2/VC++ 6.0

--------------------------------------------------------------------
desktop=GetDesktopWindow();
     ・
     中略
     ・
hdc=GetDC(hWnd);
hBitmap=CreateDIBSection(hdc,&bmpInfo,DIB_RGB_COLORS,(void**)&lpPixel,NULL,0);
hMemDC=CreateCompatibleDC(hdc);
ReleaseDC(hWnd,hdc);
hOld = (HBITMAP)SelectObject(hMemDC,hBitmap);
hdc=GetDC(desktop);
BitBlt(hMemDC,0,0,320,480,hdc,2,22,SRCCOPY);     
Render();//DirectXによる描画

DeleteObject(hBitmap);

dairygoods 2006/12/12(火) 17:24:18
DeleteObject(hBitmap) の前に hMemDC から hBitmap を外していますか?

鳴水 2006/12/12(火) 17:41:57
SelectObject(hMemDC, hOld);をDeleteObject(hBitmap);の前に入れればいいと
思っているのですが、そうした場合、実行するとエラーになってしまいました。

もしかして、DirectXで表示していることが問題なんだろうか・・・。

鳴水 2006/12/12(火) 17:57:32
[[解決]]
誠に申し訳ありません、解決いたしました。
Render()を別の場所でも呼んでいたのを忘れておりました、そのために
解放したはずのメモリーを参照しにいってエラーになっていたようです。

単純なミスで質問してしまい申し訳ありませんでした。
返答くださいましたdairygoods 様ありがとうございました。

古いスレッドには追加発言できません。