gpt4 book ai didi

c++ - 创建自己的 HRESULT?

转载 作者:IT老高 更新时间:2023-10-28 22:21:19 27 4
gpt4 key购买 nike

我已经有一个使用大量 COM 和 HRESULTS 的项目。无论如何,我想知道是否可以定义自己的 HRESULT,并且能够将 FormatMessage() 用于我们自己的 HRESULT?

我翻遍了,找不到任何东西。有什么想法吗?

编辑

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

最佳答案

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

定义了很多错误号。

关于c++ - 创建自己的 HRESULT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1522853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com