2017-06-15 3 views
0

Win32呼び出しGetMenuItemCountは、無効なハンドルをメニューに指定する以外は-1を返すことができますか?GetMenuItemCount -1を返します

+5

この質問には回答できません。あなたはすでに最も一般的な理由を特定しました。 -1が返された場合は、 'GetLastError'を呼び出して何が間違っているか調べます。このAPI呼び出しが失敗した場合は、プロセスを終了するための完全な権利があります。 –

+1

'HMENU'パラメータがオプションとマークされているのはおかしなことです。どのように 'NULL'メニューを渡して、その関数の有効な呼び出しを処理していますか? –

+0

@CodyGray:私は、 '_In_opt_'アノテーションが契約の実装側で人生を始めたと思います。実装が 'NULL'をテストしない場合にコンパイラが不平を言うように、そこに置かれました。その後、意味論的に意味をなさないインターフェイスにコピーされました。しかし、それは推測だ。たぶんそれ以上にあります。 – IInspectable

答えて

3

あなたが考えることができるのは、GetMenuItemCountが失敗すると-1を返すことです。

このAPI呼び出しが失敗する具体的な理由は文書化されていません。つまり、公開されている契約の一部ではありません。これらは実装の詳細であり、時間の経過とともに変更される可能性があります。そのため、コードでは依存できません。

エラーが発生した場合に追加情報を入手する必要がある場合は、マニュアルの指示に従ってGetLastErrorに電話してください。

+0

私は、あなたが有効なハンドルを渡したと仮定して、このAPIコールが失敗した場合にプロセスを終了する権利は完全にありますが、あなたの口に言葉を入れたくありませんでしたというDavidの主張を取り入れたいと思っていました。あなたが言うことはすべて契約に関して完全に真実ですが、実際にはこのAPIは失敗しないので、複雑なエラー処理コードを書く時間を無駄にする必要はありません。 –

関連する問題