2009-10-05 4 views
14

У меня уже есть проект, который использует много COM и HRESULTS. В любом случае мне было интересно, можно ли определить собственный HRESULT, и иметь возможность использовать FormatMessage() для нашего собственного HRESULT?Создание собственного HRESULT?

Я выкопал и не нашел ничего. Есть идеи?

EDIT

В основном я хочу, чтобы определить набор из моих собственных 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

Смежные вопросы