2009-10-05 11 views
14

Ya tengo un proyecto que usa mucho COM y HRESULTS. De todos modos, me preguntaba si es posible definir tu propio HRESULT, Y poder usar FormatMessage() para nuestro propio HRESULT?Creando tu propio HRESULT?

Busqué y no puedo encontrar nada. ¿Algunas ideas?

EDITAR

Básicamente quiero definir un conjunto de mi propia HRESULT del lugar de devolver E_FAIL. O uno de los otros genéricos. Como E_FAIL está bien. Pero digamos que quiero señalar que, por ejemplo, el subsistema de geoprocesamiento se colgó o el archivo es una imagen de trama no válida. La aplicación ya usa com a través de él.

Respuesta

12

Sí, por supuesto. Normalmente crea un .mc file e incluye eso en su proyecto. Indique el mc compiler para compilarlo; esto crea un archivo de cabecera y un archivo .rc. Los HRESULTS se definen en el archivo de encabezado. Incluya el archivo .rc en su proyecto de forma normal para que el compilador de recursos lo compile: esto coloca las definiciones de los mensajes en su módulo final. Luego puede usar las funciones normales FormatMessage para formatear los mensajes usando el HRESULTS y generar información de error y otras cosas.

Tengo esto como la línea de comandos para uno de mis archivos .mc:

mc -h "../include" -r "../include" "..\include\errors.mc" 

Esto crea errors.rc y errors.h del directorio de inclusión. Entonces hice:

#include "errors.rc" 

en mi archivo principal .rc para el proyecto.

El archivo .mc se ve un poco como esto:

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 
. 

con una gran cantidad de números de error definidos.

+0

Perfecto hizo el truco – UberJumper

Cuestiones relacionadas