创建自己的HRESULT?(Creating your own HRESULT?)

2019-07-21 01:19发布

我已经有很多使用COM和HRESULTS的项目。 反正我想知道,如果它可以定义自己的HRESULT,并能够使用的FormatMessage()为我们自己的HRESULT?

我周围挖,并不能发现任何东西。 有任何想法吗?

编辑

基本上我想定义一组我自己HRESULT的,而不是仅仅返回E_FAIL。 其他一般的人或一个。 像E_FAIL是罚款。 但是,可以说,我想指出的是,例如地理处理子系统崩溃或文件是无效的光栅图像。 该应用程序已经通过了它使用COM。

Answer 1:

当然是。 通常,您创建一个.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
.

有很多定义的错误数字。



文章来源: Creating your own HRESULT?
标签: c++ com hresult