Bmpの読み込み

[戻る]
masa 2002/01/20(日) 20:35:35
チップごとに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);

宍戸 輝光 [E-Mail] [HomePage] 2002/01/20(日) 22:49:15
メモリデバイスコンテキストやHBITMAPを作りすぎのような
気が....。リソースが足りなくなっているのでは? 「HDC
に選択したHBITMAPを削除」しているのも、問題がありそう
(というより、削除できない?)。

BMPを個別に「一枚ずつのビットマップ」として読み込むの
であれば、DIBとして読み込んだ方が良いでしょう。これなら
ピクセル列とBITMAPINFO構造体だけを確保すれば良くリソース
を消費しないので、個々のBITMAPが小さければ問題ないはず
です。ただしこの場合はHBITMAPを取得できないので、ビット
マップに対して直接GDIによる描画を行うことはできなくなり
ます(ビットマップの描画とメモリ上のピクセル列の直接操作
は可能)。

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