블로그는 나의 힘!
[ Programing ]/API2011. 5. 27. 11:55

Windows 시스템 함수를 호출하는 과정에서 오류가 발생하면
NULL을 리턴하지만 그 원인을 파악할 수 없다.

원인을 파악하기 위해서는
시스템 함수 뒤에 GetLastError 함수를 호출하여
그 함수의 오류에 해당하는 에러 코드를 리턴(정상일시 0 리턴)받아서
이를 MSDN에서 참조해야 한다.

하지만 여기서 더 나아가
에러 코드를 해석해 문자열로 만들어주는 함수를 사용한다면 MSDN을 참조하는 번거로움을 덜 수 있다.




예제 소스 :

1. 에러 코드 확인

     _tprintf( _T("Error Code : %d\n"), GetLastError() );


2. 에러 코드를 해석한 문자열 확인

     #include <atlstr.h>

     CString PrintErrorMessage( DWORD err )
     {
          LPTSTR lpMsgBuf;
          CString msg;

          FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER     // 에러코드 해석 함수
                                   | FORMAT_MESSAGE_FROM_SYSTEM
                                   | FORMAT_MESSAGE_IGNORE_INSERTS,
                                   NULL, err,
                                   MAKELANGID(LAGE_NEUTRAL, SUBLANG_DEFAULT),
                                   (LPTSTR)&lpMsgBuf, 0, NULL );

          msg = lpMsgBuf;
          LocalFree( lpMsgBuf );

          return msg;
     }



사용법 : MessageBox( NULL, PrintfErrorMessage( GetLastError() ), "Error", MB_OK );


출처 : dakuo.tistory.com/83

'[ Programing ] > API' 카테고리의 다른 글

CPU 갯수 알아보기  (0) 2011.05.27
멀티 모니터 해상도 구하기  (0) 2011.05.27
고정키와 필터키 막기  (0) 2011.05.27
커서 없애기  (0) 2010.04.19
[DDB] AlphaBlend() 알파값 적용  (0) 2010.02.04
Posted by Mister_Q