CreateDIBSectionした後のメモリ解放ができません – プログラミング – Home

通知
すべてクリア

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


鳴水
 鳴水
(@鳴水)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

スクリーンキャプチャしてその画像を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
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

DeleteObject(hBitmap) の前に hMemDC から hBitmap を外していますか?


返信引用
鳴水
 鳴水
(@鳴水)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

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

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


返信引用
鳴水
 鳴水
(@鳴水)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました