GetDIBits geht nicht :(
-
Irgendwie habe ich mal wieder Probleme, die gestern mit demselben Code noch nicht da waren, denn gestern funkionierte dieser Code noch. Soweit ich weiss hab ich nichts daran geändert. Lagen sicher gestern durch Zufall passende Daten in irgendeinem Buffer.
Jedenfalls gibt folgende Funktion immer wieder "Can't get BITMAP BITS (ErrCode: 00000000)" aus. Kann mir jemand sagen, was ich falsch gemacht habe?
HBITMAP hBitmap; HDC hBitmapDC; BITMAPINFO bi; char *ImageFile; ImageFile = "C:\bild.bmp"; printf("Drucke Bild '%s'\n", ImageFile); // Bitmap laden hBitmapDC = CreateCompatibleDC( hDC ); hBitmap = (HBITMAP)LoadImage( NULL, ImageFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); if ( hBitmap == NULL ) { printf("Can't open image\n"); return; } SelectObject( hBitmapDC, hBitmap ); // Bitmapinfo erhalten memset ( &bi, 0, sizeof( bi ) ); bi.bmiHeader.biSize = sizeof( BITMAPINFOHEADER ); if ( GetDIBits( hBitmapDC, hBitmap, 0, 0, NULL, &bi, DIB_RGB_COLORS ) == 0 ) { printf("Can't get BITMAPINFO\n"); return; } printf("Image size: %ix%i\n", bi.bmiHeader.biWidth, bi.bmiHeader.biHeight ); bi.bmiHeader.biSize = sizeof( BITMAPINFOHEADER ); void *Bits = malloc( bi.bmiHeader.biWidth * bi.bmiHeader.biHeight * 4 ); if ( GetDIBits( hBitmapDC, hBitmap, 0, bi.bmiHeader.biHeight, Bits, &bi, DIB_RGB_COLORS ) == 0 ) { printf("Can't get BITMAP BITS (ErrCode: %08x)\n", GetLastError()); return; }