CR的代码文本

all for learning about the world
  订阅 订阅  :: 管理

GetObject(_hbitmap, sizeof(bmp), &bmp)返回bmp.bmBits为NULL

Posted on 2012-06-05 13:25  mumuliang  阅读(1691)  评论(0编辑  收藏  举报

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