'Windows/[001] 책 제프리 리처 Windows via CC++'에 해당되는 글 1건

  1. 2013.04.06 Chapter01 에러 핸들링

 

Chapter 01 에러 핸들링

 

윈도우의 Return Value의 의미를 한번 알아보자.

자료형

실패했을 때의 값

VOID

실패란 없다.

BOOL

실패하면 무조건 0을 반환

성공하면 0 이외의 값을 반환

HANDLE

반환 값은 대개 NULL but

-1인 INVALID_HANDLE_VALUE를 반환한다.

그래서 MSDN를 참고해서 비교해야 한다.

PVOID

실패시 NULL 반환

성공시 메모리 주소 반환

LONG/DWORD

뭐 만든사람이 알아서 만든거니 MSDN을 보자

 

윈도우 함수가 실패하면 Thread의 지역 저장소에 적절한 에러코드를 저장해 둔다.

 

Thread의 지역저장소에 저장된 에러 코드를 아래 함수가 꺼내 온다.

 

[Function] GetLastError

 

DWORD GetLastError();

http://msdn.microsoft.com/en-us/library/windows/desktop/ms679360(v=vs.85).aspx

 

Return Value는 DWORD이며 해당 VALUE의 정의는 WinError.h.에 정의되어 있다.

해당 Header의 일부 내용이다.

함수 실패시 무조건 GetLastError을 호출해야 한다.

 

[Tool] Error Lookup

GetLastError의 Return Value(DWORD)를 입력하면 WinError.h 의 MessageText를 출력해주는 Tool(Visual Studio 설치하면 있어요.)

 

[그림 2] Value 3을 입력한 Error Lookup          [그림 3] Value 3의 WinError.h 의 정의

 

[Function] FormatMessage

 

 

DWORD WINAPI FormatMessage(

_In_ DWORD dwFlags,

_In_opt_ LPCVOID lpSource,

_In_ DWORD dwMessageId,

_In_ DWORD dwLanguageId,

_Out_ LPTSTR lpBuffer,

_In_ DWORD nSize,

_In_opt_ va_list *Arguments

);

 

 

 

 

http://msdn.microsoft.com/en-us/library/windows/desktop/ms679351(v=vs.85).aspx

 

[Function] SetLastError

 

VOID SetLastError(DWORD dwErrCode)

http://msdn.microsoft.com/ko-kr/library/windows/desktop/ms680627(v=vs.85).aspx

 

 

[예제] ErrorShow Application

 

[Function] GetDlgItemInt

 

UINT GetDlgItemInt(

int nID,

BOOL* lpTrans = NULL,

BOOL bSigned = TRUE

) const;

 

 

http://msdn.microsoft.com/ko-kr/library/c7t43w0s.aspx

 

http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=53

 

[Macro] MAKELANGID

 

WORD MAKELANGID(

USHORT usPrimaryLanguage,

USHORT usSubLanguage

);

 

http://msdn.microsoft.com/ko-kr/library/dd373908(en-us,VS.85).aspx

 

 

 

 

 

 

 

 

 

 

Posted by 잠수함토끼