通知
すべてクリア
Topic starter
2002年1月20日 8:35 PM
チップごとにBmpを読み込みたいので,下記のプログラムでBmpを読み込んでいるのですが、BmpDCの数を増やす(500ぐらい)と動作がおかしくなってしまいます。
原因が全然わかりません。どうかおしえてください。また、チップごとにBmpをよみこむ良い方法があるなら、教えてください。
HDC BmpDC[500];
hdc=GetDC(hwnd);
for(i=0;i<500;i++){
hBit=(HBITMAP)LoadImage(hInst,FileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION);
BmpDC[i]=CreateCompatibleDC(hdc);
SelectObject(BmpDC[i],hBit);
DeleteObject(hBit);
}
ReleaseDC(hwnd,hdc);
2002年1月20日 10:49 PM
メモリデバイスコンテキストやHBITMAPを作りすぎのような
気が....。リソースが足りなくなっているのでは? 「HDC
に選択したHBITMAPを削除」しているのも、問題がありそう
(というより、削除できない?)。
BMPを個別に「一枚ずつのビットマップ」として読み込むの
であれば、DIBとして読み込んだ方が良いでしょう。これなら
ピクセル列とBITMAPINFO構造体だけを確保すれば良くリソース
を消費しないので、個々のBITMAPが小さければ問題ないはず
です。ただしこの場合はHBITMAPを取得できないので、ビット
マップに対して直接GDIによる描画を行うことはできなくなり
ます(ビットマップの描画とメモリ上のピクセル列の直接操作
は可能)。