因为这部分bmBits位于显存。
MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/dd144904(v=vs.85).aspx
GetObject原型为:
int GetObject(
__in HGDIOBJ hgdiobj,
__in int cbBuffer,
__out LPVOID lpvObject
);
__in HGDIOBJ hgdiobj,
__in int cbBuffer,
__out LPVOID lpvObject
);
返回非零值表示成功。
1.返回非零、输出参数为非NULL时,返回值表示向cbBuffer写入的byte数。
2.返回非零、输出参数为NULL时,返回值表示函数保存相关信息写入的byte数。(本例中即BITMAP的长度)
对使用CreateDIBSection()创建的HBITMAP使用GetObject(),该函数成功的情况对应1. 输出参数是DIBSECTON指针,其内部的BITMAP.bmbits即图像数据。
对使用其他函数创建的HBITMAP使用GetObject(),函数成功的情况对应2.输出参数只是保存了图像数据基本信息例如长宽颜色格式等的BITMAP。获取图像数据需要使用GetDIBBits或GetBitmapBits。