C & C++/C & C++

[Tip] 에러 메시지 얻기

izen8 2011. 3. 29. 10:24
반응형
GetLastError는 word값을 리턴하므로 어떤 에러가 발생했는지 구분하기가 힘들다. 이때는 FormatMessage함수를 이용한다. 사용 방법은 다음과 같다.

  DWORD e = GetLastError();
  char *s;
  FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM     // 시스템으로 부터 꺼내겠다
  | FORMAT_MESSAGE_ALLOCATE_BUFFER,                   // 필요한만큼 메모리를 할당해가라
  0,                           // 모듈핸들
  e,                           // 에러번호
  0,                           // 언어 디폴트언어
  (char*)&s, 0,           // 버퍼 , 버퍼크기   일반변수에 값받을때 포인터,
                               // 이중 포인터로 넘긴다. 원래값이(char*)라고 알려줘라.
  0);                         // va_list 형으로 얻을때 사용
  AfxMessageBox(s);
  LocalFree(s);           // FormatMessage()는 내부적으로 LocalAlloc()을 사용한다.


반응형