因为这部分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
);

返回非零值表示成功。

1.返回非零、输出参数为非NULL时,返回值表示向cbBuffer写入的byte数。

2.返回非零、输出参数为NULL时,返回值表示函数保存相关信息写入的byte数。(本例中即BITMAP的长度)

 

对使用CreateDIBSection()创建的HBITMAP使用GetObject(),该函数成功的情况对应1. 输出参数是DIBSECTON指针,其内部的BITMAP.bmbits即图像数据。

 

对使用其他函数创建的HBITMAP使用GetObject(),函数成功的情况对应2.输出参数只是保存了图像数据基本信息例如长宽颜色格式等的BITMAP。获取图像数据需要使用GetDIBBits或GetBitmapBits。

 

 

 

 

相关文章:

  • 2022-01-12
  • 2022-12-23
  • 2022-12-23
  • 2021-04-18
  • 2021-05-21
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-05-18
  • 2022-02-09
  • 2022-03-05
  • 2021-10-21
  • 2021-07-26
  • 2021-10-03
相关资源
相似解决方案