Invalid conversion



  • Hallo zusammen !
    Ich versuche DIB Section in Anwendungsbereich anzuzeigen, nur bei Code ausführen tritt Fehler auf:

    Fehler in Zeile 32:
    
    G:\Programmierung\.....\....\....\main.cpp|96|error: invalid conversion from 'BYTE** {aka unsigned char**}' to 'void**' [-fpermissive]|
    

    [/code]

    hier der Code:

    HBITMAP CreateDibSectionFromDibFile (PTSTR szFileName)
    {
         BITMAPFILEHEADER bmfh ;
         BITMAPINFO     * pbmi ;
         BYTE           * pBits ;
         BOOL             bSuccess ;
         DWORD            dwInfoSize, dwBytesRead ;
         HANDLE           hFile ;
         HBITMAP          hBitmap ;
    
         // Datei für Lesezugriffe öffnen (und gegen Schreibaktionen anderer Prozesse sperren)
         hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ,
                             NULL, OPEN_EXISTING, 0, NULL) ;
    
         if (hFile == INVALID_HANDLE_VALUE)
              return NULL ;
    
         bSuccess = ReadFile (hFile, &bmfh, sizeof (BITMAPFILEHEADER),
                              &dwBytesRead, NULL) ;
    
         if (!bSuccess || (dwBytesRead != sizeof (BITMAPFILEHEADER))
                       || (bmfh.bfType != * (WORD *) "BM"))
         {
              CloseHandle (hFile) ;
              return NULL ;
         }
    
         dwInfoSize = bmfh.bfOffBits - sizeof (BITMAPFILEHEADER) ;
    
         pbmi=  malloc(dwInfoSize);
    
         bSuccess = ReadFile (hFile, pbmi, dwInfoSize, &dwBytesRead, NULL) ;
    
         if (!bSuccess || (dwBytesRead != dwInfoSize))
         {
              free (pbmi) ;
              CloseHandle (hFile) ;
              return NULL ;
         }
    
         hBitmap = CreateDIBSection (NULL, pbmi, DIB_RGB_COLORS, &pBits, NULL, 0) ;
    
         if (hBitmap == NULL)
         {
              free (pbmi) ;
              CloseHandle (hFile) ;
              return NULL ;
         }
    
         ReadFile (hFile, pBits, bmfh.bfSize - bmfh.bfOffBits, &dwBytesRead, NULL) ;
    
         free (pbmi) ;
         CloseHandle (hFile) ;
    
         return hBitmap ;
    }
    

    Habe nur probiert der Inahlt der Variable "dwInfoSize in BYTE zu konvertieren:

    pbmi=(BYTE*)  malloc(dwInfoSize);
    

    dann hat IDE in Zeile 44 Fehler ausgegeben:

    c:\....\.......\mingw\bin\..\lib\gcc\mingw32\4.7.1\..\..\..\..\include\wingdi.h|2737|error:   initializing argument 4 of 'HBITMAP__* CreateDIBSection(HDC, const BITMAPINFO*, UINT, void**, HANDLE, DWORD)' [-fpermissive]|
    

    Wie kann ich den Fehler beheben ?



  • in Zeile 32:

    pbmi = reinterpret_cast<BITMAPINFO*>(new unsigned BYTE [dwInfosSize]);
    

    In Zeile 44:

    hBitmap = CreateDIBSection (NULL, pbmi, DIB_RGB_COLORS, (void**) &pBits, NULL, 0) ;
    

    Jetzt funz bestens ! 👍 😉


Anmelden zum Antworten