无法将参数 2 从 'const BITMAPINFO *' 转换为 'const BITMAPINFO *'
cannot convert argument 2 from 'const BITMAPINFO *' to 'const BITMAPINFO *'
我从互联网上下载了这段代码,并从 Microsoft Visual Studio Community 2017 得到以下编译错误:
Error C2664 'HBITMAP CreateDIBSection(HDC,const BITMAPINFO *,UINT,void **,HANDLE,DWORD)':
cannot convert argument 2 from 'const BITMAPINFO *' to 'const BITMAPINFO *'
我该如何解决?
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER BitMapInfoHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;
char * abMyBitmap = new char[sizeof(BITMAPINFOHEADER) + 100 * 100 * 4]; // ?? todo check this
const BITMAPINFO * pBitMap = (BITMAPINFO*)abMyBitmap;
HBITMAP hBitmap;
VOID * pvBits;
hBitmap = CreateDIBSection( NULL, pBitMap, DIB_RGB_COLORS, &pvBits, NULL, NULL );
为什么要重新定义 BITMAPINFO
?它已在 wingdi.h
中定义。删除您的 typedef
,您的代码将正常编译。
我从互联网上下载了这段代码,并从 Microsoft Visual Studio Community 2017 得到以下编译错误:
Error C2664 'HBITMAP CreateDIBSection(HDC,const BITMAPINFO *,UINT,void **,HANDLE,DWORD)':
cannot convert argument 2 from 'const BITMAPINFO *' to 'const BITMAPINFO *'
我该如何解决?
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER BitMapInfoHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;
char * abMyBitmap = new char[sizeof(BITMAPINFOHEADER) + 100 * 100 * 4]; // ?? todo check this
const BITMAPINFO * pBitMap = (BITMAPINFO*)abMyBitmap;
HBITMAP hBitmap;
VOID * pvBits;
hBitmap = CreateDIBSection( NULL, pBitMap, DIB_RGB_COLORS, &pvBits, NULL, NULL );
为什么要重新定义 BITMAPINFO
?它已在 wingdi.h
中定义。删除您的 typedef
,您的代码将正常编译。