HRESULT
32비트의 signed 형 정수
BOOL형의 TRUE/FALSE와 마찬가지로
SUCCEEDED/FAILED
를 사용합니다.
하지만 BOOL과는 대조적으로 반드시 값을 리턴받지는 않아도 됩니다.
if(FAILED(CreateWindow(...))){
MessageBox("윈도우 생성에 실패했습니다");
}
여기서 FAILED에 주목할것이..
윈도우 생성에 실패할 경우 CreateWindow()메서드에 문제가 생긴것이기 때문에, 저 메시지 박스가 뜨면 그냥 저 메서드만 보면 됩니다.
하지만, 주의할점이 BOOL형은 TRUE/FALSE가 1/0인데 반해
HRESULT는 SUCCEEDED/FAILED가 0/1입니다.
* HRESULT 형의 구조
0~15 비트 : RETURN CODE
16~28 비트 : FACILITY
29~30 비트 : R
31 비트 : SEVERITY ( SEVERITY(31비트)는 함수의 수행의 성공과 실패를 알려주는 코드다.)
* HRESULT의 상태 정보 요약.
S_OK : 때때로 Boolean TRUE 값(0X0)으로 S_FALSE와 함께 사용되며 함수가 성공하였음을 의미한다.
NOERROR : S_OK와 동일한 의미이다.
S_FALSE : S_OK와 반대로 Boolean FALSE 값(0X1)으로 함수가 실패하였음을 의미한다.
E_UNEXPRCTED : 치명적인 실패를 의미한다.
E_NOTIMPL : 멤버 함수에 구현 코드가 포함되어 있지 않다.
E_OUTOFMEMORY : 필요한 메모리를 할당할 수 없음
E_INVALIDARG : 하나 혹은 그 이상의 인자가 타당하지 않음
E_NOINTERFACE : 요청한 인터페이스를 지원하지 않음
E_POINTER : 타당하지 않은 포인터
E_HANDLE : 타당하지 않은 처리
E_ABORT : 작동 중지
E_FAIL : 특정하지 않은 실패
E_ACCESSDENIED : 일반적 접근이 금지된 에러
LRESULT
LRESULT는 long형 타입으로 Win32환경에서 처리를 마친 후 o/s에게 어떤 신호를 주기 위해서 사용되는 값이다.
각각의 메시지 case에 대한 처리 값이 때로는 -1, 0, 1 등으로, 어떤 때는 비트 플래그로 o/s가 알 수 있게 설정한다.
대부분의 경우에는 0을 리턴하면 내가 모든 메시지를 처리할테니까 o/s에 더이상 메시지를 처리하지 말라는 것으로 인식하고 간혹 -1인 경우는 o/s가 진행하던 작업을 취소시키는 의미도 있다.
'Programming Language > C, C++' 카테고리의 다른 글
struct, typedef (0) | 2014.05.13 |
---|---|
C++ TR1 설치 (0) | 2014.05.13 |
inline 함수 (0) | 2014.05.11 |
릴리즈모드 링크에러 (0) | 2014.05.11 |
Namespace (0) | 2014.05.11 |