我编写了一个用来读取bmp的函数,可是编译时有个错误一直无法解决,请大家帮忙看看,谢谢
源码如下:
     BOOL               bSuccess ;
     DWORD              dwFileSize, dwHighSize, dwBytesRead ;
     HANDLE             hFile ;
     BITMAPFILEHEADER * pbmfh ;     hFile = CreateFile (pstrFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
                         OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL) ;     if (hFile == INVALID_HANDLE_VALUE)
          return NULL ;     dwFileSize = GetFileSize (hFile, &dwHighSize) ;     if (dwHighSize)
     {
          CloseHandle (hFile) ;
          return NULL ;
     }     pbmfh = malloc (dwFileSize) ;     if (!pbmfh)
     {
          CloseHandle (hFile) ;
          return NULL ;
     }     bSuccess = ReadFile (hFile, pbmfh, dwFileSize, &dwBytesRead, NULL) ;
     CloseHandle (hFile) ;     if (!bSuccess || (dwBytesRead != dwFileSize)         
                   || (pbmfh->bfType != * (WORD *) "BM") 
                   || (pbmfh->bfSize != dwFileSize))
     {
          free (pbmfh) ;
          return NULL ;
     }
     return pbmfh ;

解决方案 »

  1.   

    错误信息如下:
    error C2440: '=' : cannot convert from 'void *' to 'struct tagBITMAPINFO *'
            Conversion from 'void*' to pointer to non-'void' requires an explicit cast
      

  2.   

    错误指向:
    pbmfh = malloc (dwFileSize) ; 不知道如何改,大家帮忙看看,多谢
      

  3.   

    pbmfh->bfType != * (WORD *) "BM") 'MB'
      

  4.   

        pbmfh = (BITMAPFILEHEADER *)malloc (dwFileSize) ; 你为什么要在堆上分配内存呢?直接定义一个结构体不行?
      

  5.   

    pbmfh = (BITMAPINFO*)malloc(dwFileSize) ;