CreateDIBSection:返回值与错误

4

CreateDIBSection的文档中指出:

如果函数成功,返回值是新创建的DIB的句柄,*ppvBits指向位图的位值。

如果函数失败,返回值为NULL,*ppvBits也为NULL。

然而,在此之后它直接指出:

该函数可能返回以下值[...] ERROR_INVALID_PARAMETER

那么,这个最后一句话是什么意思?我几乎无法想象它确实会返回那个值(可能它实际上调用了SetLastError)。这是否有详细的文档记录?


1
请查看此处 - http://i.imgur.com/JV3VYcB.png - 这是来自旧版MSDN(2008年)CreateDIBSection文章的截图。这里全部正确。 - RbMm
1
有关GDI函数错误的MSDN信息一直以来都不太准确。它当然不能同时返回NULL和错误代码。总的来说,这些信息并不实用,因为GDI函数总是因为无效参数而失败。所以如果你得到NULL,就假设这就是出错的原因吧。 - Hans Passant
1个回答

7

这只是当前版本文档中的错误!

CreateDIBSection 函数总是返回 HBITMAP。如果函数失败,将会返回 0 (NULL),您可以调用 GetLastErrorGetLastError 将返回 ERROR_INVALID_PARAMETER

这是所有 GDI 函数的标准方式,更何况函数不可能同时返回 NULL 错误代码。我还能找到此函数的旧版 MSDN 文档(大约为2008年),它证实了当前在线文档确实存在错误:


我倾向于相信你,但你能以某种方式支持你的主张吗? - phimuemue
@phimuemue - 尝试自己思考一下,不要只是盲目地跟随文档中的任何错误。 - RbMm
1
也许我应该写下我已经怀疑你所声称的内容。然而,我提出这个问题的整个意图是想找到一些支持这种假设的证据。 - phimuemue
3
我有一个旧的离线MSDN 2008,这里是该函数文章的截图 - http://i.imgur.com/JV3VYcB.png - RbMm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接