#include <windows.h>
#include <stdio.h>
// 윈도우에서의 에러처리
// 1. 스레드당 1개의 에러 코드가 필요 하다.
// 2. GetLastError() 사용.
// Helper.h 헤더를 만들어서 아래 함수 2개를 복사
void ReportError( const char* msg )
{
DWORD e = GetLastError();
char* s;
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
0, // 문자열을 담은 DLL 핸들
e, // 에러 번호
0, // 언어(0 디폴트 언어(OS사용하는 언어, 한글))
(char*)&s, 256, // 문자열을 담아올 버퍼, **버퍼을 할당해 올때는 이중포인터로 전달
0);
printf("%s : %s\n", msg, s);
LocalFree( s );
}
void ErrorQuit( const char* msg )
{
ReportError( msg );
ExitProcess( 0); // 프로세스 종료 함수.
}
int main()
{
HWND hwnd = CreateWindow(0,0,0,0,0,0,0,0,0,0,0); // 0 11개
if ( hwnd == 0)
{
ReportError("CreateWindow Error");
DWORD e = GetLastError();
printf("실패 : %d\n", e);
//char s[256] = {0};
char* s;
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_ALLOCATE_BUFFER,
0, // 문자열을 담은 DLL 핸들
e, // 에러 번호
0, // 언어(0 디폴트 언어(OS사용하는 언어, 한글))
(char*)&s, 256, // 문자열을 담아올 버퍼
// 버퍼을 할당해 올때는 이중포인터로 전달
0);
printf("%s\n", s );
// FormatMessage() 는 내부적으로 LocalAlloc() 이라는 함수로 할당합니다
LocalFree( s );
}
}
// 프로젝트 메뉴 - 속성 - 구성속성에서 문자집합 을 멀티 바이트 셋으로
|