2009-10-05 55 views
14

我已經有了一個使用COM和HRESULTS的項目。 ANYways我想知道是否可以定義你自己的HRESULT,並且能夠使用FormatMessage()作爲我們自己的HRESULT?創建您自己的HRESULT?

我挖了,找不到任何東西。有任何想法嗎?

編輯

基本上我想定義一組我自己HRESULT的,而不是僅僅返回E_FAIL。或者其他通用的。像E_FAIL一樣好。但讓我說我想指出,例如地理處理子系統崩潰或文件是無效的光柵圖像。該應用程序已經使用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文件中。

的.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 
. 

,有很多定義的錯誤數字。

+0

完美的伎倆 – UberJumper