我已经有很多使用COM和HRESULTS的项目。 反正我想知道,如果它可以定义自己的HRESULT,并能够使用的FormatMessage()为我们自己的HRESULT?
我周围挖,并不能发现任何东西。 有任何想法吗?
编辑
基本上我想定义一组我自己HRESULT的,而不是仅仅返回E_FAIL。 其他一般的人或一个。 像E_FAIL是罚款。 但是,可以说,我想指出的是,例如地理处理子系统崩溃或文件是无效的光栅图像。 该应用程序已经通过了它使用COM。
我已经有很多使用COM和HRESULTS的项目。 反正我想知道,如果它可以定义自己的HRESULT,并能够使用的FormatMessage()为我们自己的HRESULT?
我周围挖,并不能发现任何东西。 有任何想法吗?
编辑
基本上我想定义一组我自己HRESULT的,而不是仅仅返回E_FAIL。 其他一般的人或一个。 像E_FAIL是罚款。 但是,可以说,我想指出的是,例如地理处理子系统崩溃或文件是无效的光栅图像。 该应用程序已经通过了它使用COM。
当然是。 通常,您创建一个.mc文件并包括在您的项目。 指示MC编译器来构建它-这将创建一个头文件和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
.
有很多定义的错误数字。