typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
BITMAPINFO结构最后是调色板数据,包含若干个RGBQUAD条目,一般来说最大为256个,定义为长度为1的数组是c语言里常用的一个技巧,用来定义可变长度的结构.你在程序里需要分配够保存调色板的大小,最好把mBitmapInfo定义为一个指针
mBitmapInfo = (BITMAPINFO*)malloc(sizeof(BITMAPINFO)+256*sizeof(RGBQUAD));
其实:bmiColors[1] 只是给了一个地址,因为BMP种类多,这个数组的程度是可变的。
新语法可以写成:
bmiColors[]; 就是不完全结构。
BITMAPINFO *pBitmapInfo=(BITMAPINFO*)(new char[sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)]);
pBitmapInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
pBitmapInfo->bmiHeader.biWidth = m_iImageWidth;
pBitmapInfo->bmiHeader.biHeight = m_iImageHeight;
pBitmapInfo->bmiHeader.biPlanes=1;
pBitmapInf