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;
    }
    

Anmelden zum Antworten