Друзья, у меня возникла проблема с использованием этой функции. Я очень
долго читал форум и все ветки по этой теме, но так и не смог решить
проблему.
Вот кусок кода:
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 считает, что читается ей
замечательно.
В чем же проблема?