スクリーンキャプチャしてその画像を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);
DeleteObject(hBitmap) の前に hMemDC から hBitmap を外していますか?
SelectObject(hMemDC, hOld);をDeleteObject(hBitmap);の前に入れればいいと
思っているのですが、そうした場合、実行するとエラーになってしまいました。
もしかして、DirectXで表示していることが問題なんだろうか・・・。
誠に申し訳ありません、解決いたしました。
Render()を別の場所でも呼んでいたのを忘れておりました、そのために
解放したはずのメモリーを参照しにいってエラーになっていたようです。
単純なミスで質問してしまい申し訳ありませんでした。
返答くださいましたdairygoods 様ありがとうございました。