2009-10-05 32 views
14

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

私は周囲を掘って何も見つけられません。何か案は?

EDIT

は基本的に私はちょうどE_FAILを返すのではなく、私自身のHRESULTのセットを定義します。または他の一般的なものの1つ。 E_FAILのようにうまくいきます。しかし、たとえばGeoprocessingサブシステムがクラッシュした、またはファイルが無効なラスターイメージであることを指摘したいとします。アプリケーションはすでにcomを使用しています。

答えて

12

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

私は私の.mcファイルのいずれかのコマンドラインとしてこれを持っている:

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

これには、ディレクトリ内errors.rcとerrors.hを作成します。その後、私はした:

#include "errors.rc" 

プロジェクトの私のメイン.rcファイル。定義されたエラー番号の多くが付いて

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 
. 

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

+0

完璧なトリックでした – UberJumper

関連する問題