FormatMessage函数用来格式化一个消息字符串。函数需要一个消息定义作为输入,消息定义可以来源于一个buffer,也可来源于一个加载到模块的消息表资源,或者调用者可以使用此函数来在系统消息表资源中寻找消息定义。函数基于一个消息标识和一种语言标识来从一个消息表资源中寻找消息定义。
通常,在写WINDOWS程序的时候我们会用 GetLastError()来获得错误代号,进而想要知道具体出错原因(文本描述),我们可以用 FormatMessage 函数来得到。
1
2 /*
3 利用FormatMessage函数得到错误代码的文本显示。而错误代号则可由GetLastError()获得。(_WINDOWS)
4 */
5
6 DWORD nErrorNo = GetLastError ( ); // 得到错误代码
7 LPSTR lpBuffer;
8 FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER | //可以由函数来分配空间,不要用LocalFree来释放
9 FORMAT_MESSAGE_IGNORE_INSERTS |
10 FORMAT_MESSAGE_FROM_SYSTEM,
11 NULL,
12 nErrorNo, // 此乃错误代码,通常在程序中可由 GetLastError()得之
13 MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), //选择默认语言
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);
详细请看MSDN