17

私はすでに多くのCOMとHRESULTSを使用するプロジェクトを持っています。とにかく、私はあなた自身のHRESULTを定義することが可能であり、そして私たち自身のHRESULTのためにFormatMessage()を使用することができるかどうか疑問に思いましたか?

掘り下げて何も見つかりません。何か案は?

編集

基本的に、E_FAILを返すだけでなく、独自のHRESULTのセットを定義したいと思います。または他の一般的なものの1つ。E_FAILのように問題ありません。ただし、たとえば、ジオプロセシングサブシステムがクラッシュしたか、ファイルが無効なラスターイメージであることを指摘したいとします。アプリケーションはすでにCOMを使用しています。

4

1 に答える 1

15

はい、もちろん。通常、.mcファイルを作成し、それをプロジェクトに含めます。mcコンパイラにビルドするように指示します。これにより、ヘッダーファイルと.rcファイルが作成されます。HRESULTSはヘッダーファイルで定義されています。リソースコンパイラがコンパイルするために、通常どおりプロジェクトに.rcファイルを含めます。これにより、メッセージ定義が最終モジュールに配置されます。次に、通常のFormatMessage関数を使用して、HRESULTSを使用してメッセージをフォーマットし、エラー情報などを生成できます。

.mcファイルの1つのコマンドラインとしてこれがあります。

mc   -h "../include" -r "../include" "..\include\errors.mc"

これにより、includeディレクトリにerrors.rcとerrors.hが作成されます。それから私はしました:

#include "errors.rc"

プロジェクトのメインの.rcファイルにあります。

.mcファイルは次のようになります。

LanguageNames=(English=0x409:MSG00409)

MessageId=0x1
SymbolicName=SOME_CATEGORY
Language=English
Some Category
.

MessageID=
Severity=Error
SymbolicName=ERROR_INVALID_PROP_INDEX

Language=English
Invalid property index %1
.

多くのエラー番号が定義されています。

于 2009-10-05T23:16:48.517 に答える