window함수들은 반환형을 가지고 있다.
반환타입은 대개 함수의 성공과 실패를 나타내는 데 쓰이며, 각 자료형의 의미는 다음과 같다.
자료형 |
실패했을 때의 값 |
VOID |
이 함수는 절대 실패 하지 않는다. |
BOOL |
성공시 0이 아닌 값, 실패하면 0 (주의 : 성공시 0이 아닌 값이기에 TRUE(1)과 비교하지 말자) |
HANDLE |
성공시 유효한 핸들, 실패하면 0(NULL) or (INVALID_HANDLE_VALUE) 실패의 경우가 나뉘므로 SDK를 참조하여 프로그래밍을 하자. |
PVOID |
성공시 데이터를 저장하고 있는 메모리 주소를 반환, 실패시 NULL반환 |
LONG/DWORD |
HANDLE과 마찬가지로 실패의 경우가 각 함수마다 다르므로 SDK를 참조하여 프로그래밍을 하자. |
함수가 실패하는 경우에는 전달받은 매개변수가 유효하지 않을때, 다른 이유(네트워크나 힙이 가득찻을 경우 등등)으로 기능을 수행하지
못했을때가 있다.
::GetLastError();
위의 표에서 윈도우함수가 반환하는 타입에 따라 함수의 성공과 실패를 알 수있다고 했다.
그렇지만, 프로그래밍을 하다보면 예외처리를 해주어야 하는데 이 예외 처리라는게 해당함수의 성공과 실패에 따라 결정 되기때문에
해당기능(함수)이 왜 실패 했는지 알아 내는 과정이 필요하다.
이때 GetLastError()함수를 호출하면 가장 최근에 호출된 함수의 에러코드를 가져오게 된다.
<error코드는 WinError.h에 정의 되어있다.>
※Error code를 보는방법.
:GetLastError함수는 에러코드를 반환하는데 이 에러코드의 개수는 일일이 찾기 어려울 만큼 많다.
따라서, 이 에러코드가 무엇인지 바로 확인 할수 있는 방법을 소개 하고자 한다.
1)Watch(조사식)
: 에러코드의 값을 디버깅을 하면서 볼 수 있다. 조사식 창에다가 $err,hr을 입력하면 현재 에러코드값을 볼 수있다.
단축키는 디버깅중 Ctrl+Alt+1,2,3,4
2)Error Lookup
:에러코드의 값을 입력하면 에러코드에 관한 정보가 출력되는 창이다, 기본적으로 visual studio에 내장되어 있으며
도구>>오류조회를 선택하면 볼 수 있다.
'Programming > C++' 카테고리의 다른 글
[C++11] Rvalue Reference #2 - Move Semantics (0) | 2013.01.23 |
---|---|
Lvalue Rvalue (1) | 2013.01.21 |
this pointer (0) | 2012.09.16 |
error C2065: 'IDD_Main_DIALOG' : 선언되지 않은 식별자입니다. (0) | 2012.07.25 |
Bitmap File구조 (0) | 2009.09.19 |