반응형
Windows 프로그래밍을 할 때 에러를 확인하기 위해서 GetLastError() 를 사용합니다.
GetLastError() 함수의 원형은 다음과 같습니다.
DWORD WINAPI GetLastError(VOID)
GetLastError()는 가장 최근의 에러의 번호를 리턴해줍니다.
함수 이름 자체가 함수의 기능을 충실히 설명하고 있습니다.
GetLastError()로 에러 번호를 가져올 수 있는데 이 에러의 번호는 미리 정의가 되어있습니다.
winerror.h 파일의 정의 내용 중 일부입니다.
// // Define the severity codes // // // MessageId: ERROR_SUCCESS // // MessageText: // // The operation completed successfully. // #define ERROR_SUCCESS 0L #define NO_ERROR 0L // dderror #define SEC_E_OK ((HRESULT)0x00000000L) // // MessageId: ERROR_INVALID_FUNCTION // // MessageText: // // Incorrect function. // #define ERROR_INVALID_FUNCTION 1L // dderror // // MessageId: ERROR_FILE_NOT_FOUND // // MessageText: // // The system cannot find the file specified. // #define ERROR_FILE_NOT_FOUND 2L // // MessageId: ERROR_PATH_NOT_FOUND // // MessageText: // // The system cannot find the path specified. // #define ERROR_PATH_NOT_FOUND 3L
에러 코드는 MessageID와 MessageText, 그리고 에러의 상수 이름으로 구성되어 있습니다.
보통은 저 에러 번호를 그대로 사용하지 않고, ERROR_SUCCESS같이 문자를 이용합니다.
이 방법이 더 명시적이고 보기 좋은 코딩이 가능하기 때문입니다.
그럼 이 GetLastError()함수를 어떻게 사용하는 지 보도록 하겠습니다.
간단한 소스코드를 보도록 하겠습니다.
#include "stdafx.h" #include <iostream> #include <windows.h> using namespace std; int main() { cout << "Last Error : " << GetLastError() << endl; SetLastError(2); cout << "Last Error : " << GetLastError() << endl; return 0; }
SetLastError()로 에러를 변경했습니다.
결과를 실행하면 다음과 같이 출력이 됩니다.
에러 코드의 의미를 확인하기 위해서는 Visual Studio의 TOOLS 메뉴에 있는 Error Lookup으로 확인 가능합니다.
2번 에러는 파일을 찾을 수 없을 때 발생하는 에러입니다.
프로그래밍 과정에서 에러가 발생하면 GetLastError()를 추가해서 에러를 해결할 수 있습니다.
반응형
'Programming > Win32&MFC&COM' 카테고리의 다른 글
Windows 메시지의 구조와 처리 (0) | 2015.01.20 |
---|---|
MFC 클래스 계층도(hierarchy chart) (0) | 2015.01.06 |
프로세스 목록 확인하기(작업 관리자) (0) | 2015.01.03 |
API, MFC에서 사용하는 변수형 (0) | 2015.01.02 |
MFC에서 프로그램의 hInstance와 hWnd 구하기 (0) | 2015.01.01 |