系统相关
首页 > 系统相关> > Windows API一日一练 81 FormatMessage函数

Windows API一日一练 81 FormatMessage函数

作者:互联网

分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

在开发软件的过程里,经常要做的工作就是调试程序,许多问题的出现,不但是逻辑的问题,还有可能是对API的不熟悉,或者某种条件下调用API会出错的。那么这些出错的原因是什么呢?通常只获取到错误码,也就是通过函数GetLastError得到。当然可以根据这个错误码去查找MSDN就可以知道出错的原因,但有时在客户那里并没有MSDN,那么就需要把调用API函数出错的信息显示出来,或者写到LOG里去。这时就需要调用函数FormatMessage把出错码详细原因显示出来。   函数FormatMessage声明如下:   WINBASEAPI DWORD WINAPI FormatMessageA(     DWORD dwFlags,     LPCVOID lpSource,     DWORD dwMessageId,     DWORD dwLanguageId,     LPSTR lpBuffer,     DWORD nSize,     va_list *Arguments     ); WINBASEAPI DWORD WINAPI FormatMessageW(     DWORD dwFlags,     LPCVOID lpSource,     DWORD dwMessageId,     DWORD dwLanguageId,     LPWSTR lpBuffer,     DWORD nSize,     va_list *Arguments     ); #ifdef UNICODE #define FormatMessage FormatMessageW #else #define FormatMessage FormatMessageA #endif // !UNICODE   调用函数的例子如下: #001 //系统错误信息提示。 #002  //蔡军生 2007/11/28 QQ:9073204 深圳 #003  void TestErrorInfo(void) #004  { #005         //进行出错。 #006         if (!CreateDirectory(_T("c://"),0)) #007         { #008               TCHAR szBuf[128]; #009               LPVOID lpMsgBuf; #010               DWORD dw = GetLastError(); #011  #012              FormatMessage( #013                   FORMAT_MESSAGE_ALLOCATE_BUFFER | #014                   FORMAT_MESSAGE_FROM_SYSTEM, #015                   NULL, #016                   dw, #017                   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), #018                   (LPTSTR) &lpMsgBuf, #019                   0, NULL ); #020  #021                wsprintf(szBuf, #022                    _T("%s 出错信息 (出错码=%d): %s"), #023                    _T("CreateDirectory"), dw, lpMsgBuf); #024  #025               LocalFree(lpMsgBuf); #026  #027               //输出提示。 #028               OutputDebugString(szBuf); #029         } #030         #031  }   调用后输出下面的提示信息: CreateDirectory 出错信息 (出错码=5): 拒绝访问。  

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

标签:API,Windows,错码,FormatMessage,出错,DWORD,lpMsgBuf
来源: https://www.cnblogs.com/skiwnchh/p/10515587.html