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) です。