GetLastError与FormatMessage联用得到出错原因
通常,在写WINDOWS程序的时候我们会用 GetLastError()来获得错误代号,进而想要知道具体出错原因(文本描述),我们可以用 FormatMessage 函数来得到。
下面示例一段代码。
/* 3 利用FormatMessage函数得到错误代码的文本显示。而错误代号则可由GetLastError()获得。(_WINDOWS) 4 */ 5 6 DWORD nErrorNo = GetLastError ( ); // 得到错误代码 7 LPSTR lpBuffer; 8 FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER | 9 FORMAT_MESSAGE_IGNORE_INSERTS | 10 FORMAT_MESSAGE_FROM_SYSTEM, 11 NULL, 12 nErrorNo, // 此乃错误代码,通常在程序中可由 GetLastError()得之 13 LANG_NEUTRAL, 14 (LPTSTR) & lpBuffer, 15 0 , 16 NULL ); 17 CString strErrorCause = lpBuffer ? _T(lpBuffer) : _T( " Sorry, cannot find this error info. " ); 18 UpdateData (FALSE); 19 20 // Free the buffer. 21 LocalFree (lpBuffer);