2016-11-28 16 views
2

The documentation of CreateDIBSection状態:CreateDIBSection:エラー対戻り値

関数が成功すると、戻り値は新しく のハンドルですが、ビットマップのビット値にppvBitsポイントをDIBを作成し、*。

この関数が失敗した場合、戻り値はNULLで、* ppvBitsはNULLです。直接その後

しかし、それは述べている:

この関数は次の値を返すことができます[...]

ERROR_INVALID_PARAMETER

だから、何がこの最後の文を意味していますか?私はほとんどそれが の値を返すと想像することはできません(実際には SetLastErrorを呼び出します)。これはどこか完全に文書化されていますか?

+1

見て、この - のhttp: //i.imgur.com/JV3VYcB.png - CreateDIBSection の記事から古いMSDN(2008)のスクリーンショットここにすべて正しい – RbMm

+1

GDI関数のエラーに関する悪いMSDN情報の履歴があります。もちろん、NULL *と*エラーコードを返すことはできません。最終的に情報は有用ではなく、GDI関数*は無効なパラメータのために常に失敗する。だからあなたがNULLを取得した場合、それが間違っていたと仮定してください。 –

答えて

5

これは、ドキュメントの最新バージョンのエラーです。

CreateDIBSectionは常にHBITMAPを返します。関数が失敗すると、0(NULL)が返され、GetLastErrorを呼び出すことができます。 GetLastErrorERROR_INVALID_PARAMETERを返します。

これは、すべてのGDI関数が機能する標準的な方法です。関数が不可能であることは言うまでもありませんが、NULLの両方にエラーコードが返されます。また、私は(2008年頃)この関数のMSDNドキュメントの古いバージョンを掘ることができた、そしてそれは、オンラインドキュメントの現在のバージョンは確かに間違っていることを確認:

+0

私はあなたを信用する傾向がありますが、何とかあなたの主張を支持することができますか? – phimuemue

+0

@phimuemue - 自分自身で少し考えてみると、ドキュメント内のエラーを盲目的に追跡するだけでなく、 – RbMm

+1

たぶん私はあなたが主張していることをすでに疑っていると書いたはずです。しかし、私の質問の全体的なポイントは、私はこの仮定のためのいくつかのサポートを見つけることです。 – phimuemue