创建自己的HRESULT?

Ube*_*per 16 c++ com hresult

我已经有一个项目使用了很多COM和HRESULTS.我想知道是否有可能定义你自己的HRESULT,并且能够将FormatMessage()用于我们自己的HRESULT?

我四处乱窜,无法找到任何东西.有任何想法吗?

编辑

基本上我想定义一组我自己的HRESULT,而不是只返回E_FAIL.或者其他通用的.像E_FAIL一样好.但是,我想说,我想指出,例如地理处理子系统崩溃或文件是无效的光栅图像.该应用程序已经通过它使用com.

180*_*ION 14

当然是.通常,您创建一个.mc文件并将其包含在项目中.指示mc编译器构建它 - 这会创建一个头文件和一个.rc文件.HRESULTS在头文件中定义.您可以在项目中包含.rc文件,以便编译资源编译器 - 这会将消息定义放入最终模块中.然后,您可以使用普通的FormatMessage函数使用HRESULTS格式化消息,并生成错误信息和其他内容.

我将此作为我的.mc文件的命令行:

mc   -h "../include" -r "../include" "..\include\errors.mc"
Run Code Online (Sandbox Code Playgroud)

这会在include目录中创建errors.rc和errors.h.然后我做了:

#include "errors.rc"
Run Code Online (Sandbox Code Playgroud)

在我项目的主.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
.
Run Code Online (Sandbox Code Playgroud)

定义了大量错误编号.