2009-10-05 2 views
14

이미 많은 COM과 HRESULTS를 사용하는 프로젝트가 있습니다. 어쨌든 난 자신의 HRESULT를 정의 할 수 있는지 궁금 해서요, 우리 자신의 HRESULT에 FormatMessage()를 사용할 수 있습니까?자신의 HRESULT 만들기?

나는 주위를 파고 아무것도 찾을 수 없습니다. 어떤 아이디어?

편집

는 기본적으로 난 그냥 E_FAIL을 반환하는 대신 내 자신의 HRESULT의 집합을 정의합니다. 아니면 다른 일반적인 것들 중 하나. E_FAIL처럼 괜찮아. 하지만 예를 들어 지오 프로세싱 서브 시스템이 충돌했거나 파일이 유효하지 않은 래스터 이미지라는 것을 지적하고 싶습니다. 응용 프로그램은 이미 그것을 통해 com을 사용합니다.

답변

12

물론 가능합니다. 일반적으로 .mc file을 만들고이를 프로젝트에 포함합니다. mc compiler을 빌드하도록 지시하십시오. 그러면 헤더 파일과 .rc 파일이 작성됩니다. HRESULTS는 헤더 파일에 정의됩니다. 리소스 컴파일러가 컴파일 할 때 일반적으로 프로젝트에 .rc 파일을 포함 시키십시오. 이렇게하면 최종 모듈에 메시지 정의가 저장됩니다. 그런 다음 일반 FormatMessage 함수를 사용하여 HRESULTS를 사용하여 메시지의 서식을 지정하고 오류 정보 및 기타 정보를 생성 할 수 있습니다.

내의 .mc 파일 중 하나에 대한 명령 줄로이 있습니다

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

이 include 디렉토리에 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