Проблема с GetDIBits
От: nikitozz  
Дата: 10.12.04 03:00
Оценка:
Друзья, у меня возникла проблема с использованием этой функции. Я очень
долго читал форум и все ветки по этой теме, но так и не смог решить
проблему.

Вот кусок кода:


BITMAP  bmp;
BITMAPINFO bmpinf;
// hBitmap - HBITMAP растра
GetObject(hBitmap, sizeof(bmp), &bmp);

int height = bmp.bmHeight;
int width = bmp.bmWidth;
int bpp = bmp.bmBitsPixel;   //Все эти переменные нормально заполняются
ZeroMemory(&bmpinf, sizeof(bmpinf));
bmpinf.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmpinf.bmiHeader.biCompression = BI_RGB;
bmpinf.bmiHeader.biBitCount = bpp;
bmpinf.bmiHeader.biPlanes = 1;
bmpinf.bmiHeader.biWidth = width;
bmpinf.bmiHeader.biHeight = -height;
bmpinf.bmiHeader.biSizeImage = width*height*bpp/8;

DWORD *buf;
buf = (DWORD*)new char[width*height*bpp/8];//буфер

HDC hdc = GetDC(NULL);

SelectObject (hdc, hBitmap);

int te=GetDIBits(hdc, hBitmap, 0, height, buf, &bmpinf,
DIB_RGB_COLORS);    // в te, как и требует msdn, число прочитанных
строк, height.


Но вот незадача: buf как был забит нулями с мусором, так и остался
нетронутым В te — не ноль, т.е. GetDIBits считает, что читается ей
замечательно.
В чем же проблема?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.