wow*_*bob 1 c++ windows arrays struct
BITMAPINFO 结构有以下声明
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;
Run Code Online (Sandbox Code Playgroud)
为什么RGBQUAD数组是静态的?为什么它不是指针?
声明一个变量大小的结构是一个标准的技巧.颜色表从不只有一个条目,对于单色位图至少有2个,对于8bpp位图通常为256,等等.由bmiHeader.biClrUsed成员指示.所以struct的实际大小取决于位图格式.
由于C语言不允许声明这样的数据结构,因此这是最接近的匹配.创建结构需要malloc()分配足够的字节来存储结构,从biClrUsed计算.然后一个简单的转换为(BITMAPINFO*)使它可用.