Most Windows Platform SDK functions set error codes that GetLastError() will return, and the FormatMessage function can retrieve text for the error code.
void GetErrorMessage(const DWORD e, CString &Message) {
LPTSTR lpMsgBuf=NULL;
DWORD Size, fme;
Size = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, e, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf, 0, NULL);
fme = GetLastError();
if (lpMsgBuf) {
Message = lpMsgBuf;
LocalFree(lpMsgBuf);
if (Size)
return;
}
if (fme)
Message.Format("FormatMessage error code %u", fme);
else
Message.Format("unknown error code %u", e);
}
See my Visual C++ Programmer Stuff page for more C++ stuff.