使用 GetDIBits 函数从 HBITMAP 接收到的 DIB 数据应该分配多少内存?
GetDIBits 函数在 MSDN 中描述如下:
int GetDIBits(
__in HDC hdc,
__in HBITMAP hbmp,
__in UINT uStartScan,
__in UINT cScanLines,
__out LPVOID lpvBits,
__inout LPBITMAPINFO lpbi,
__in UINT uUsage
);
但是,接收数据 lpvBits 的缓冲区必须在调用 GetDIBits 之前分配,因为 GetDIBits 不会自动分配它。
问题是应该分配多少内存来接收 DIB 数据?假设HBITMAP的width&height为Bmp_Width&Bmp_Height;并且位图是 32 位 (RGBA)。