SetDIBits() в Win98 и WinNT
От: Michail_TV  
Дата: 23.09.03 04:35
Оценка:
Подскажите, какие отличия в использовании SetDIBits() под 98 и NT ?
У меня в 98 все работает (почти всегда), а под NT (2000 и ХР) работает через раз
или не работает совсем. Говорит "Недостаточно памяти для выполнения команды".

HDC dev_h=CreateCompatibleDC(NULL);
MY_BITMAPINFO *bmp_data=new MY_BITMAPINFO; // заголовок для 256 моих цветов
Graphics::TBitmap *bmp1=((Graphics::TBitmap*)(ListGrafPlace1->Items[num])); // num — просто индекс

size=params[6]*(Length); // Length — ширина картинки
params[2]=((Length + 3) & 0xfffc);
bmp_data->bmiHeader.biSizeImage=size;
bmp_data->bmiHeader.biHeight = -params[6]; // -количество строк
bmp_data->bmiHeader.biWidth = params[2]; // делится на 4

res=SetDIBits(dev_h,bmp1->Handle,0,params[6],(void*)Array_Color1,(BITMAPINFO*)bmp_data,DIB_RGB_COLORS);

ReleaseDC(NULL,dev_h);
DeleteDC(dev_h);

Я пробовал изменять знак высоты картинки — не помогло.
Пробовал изменять размер картинки — не помогло.
Какая же хитрость?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.