Windows API : 系统错误信息字符串获取

还在不断的切换到 ERROR LOOKUP 程序查看 API 返回的系统错误代码吗? 那简直太低效啦!

不如让系统以当前默认编码为你生成错误信息字符串吧:

/
//
// IN
// DWORD dwError  错误号,默认值(0xFFFFFFFF)表示直接获取本线程的最后错误号
//
// OUT
// CString    系统生成的错误信息串
//
static CString GetErrorMsg(DWORD dwError = 0xFFFFFFFF)
{
 dwError = (dwError == 0xFFFFFFFF) ? GetLastError() : dwError;

 // format message
 LPVOID lpMsgBuf;
 FormatMessage(
  FORMAT_MESSAGE_ALLOCATE_BUFFER |
  FORMAT_MESSAGE_FROM_SYSTEM |
  FORMAT_MESSAGE_IGNORE_INSERTS,
  NULL, // module to get message from (NULL == system)
  dwError,
  0,  // Default language : MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
  (LPTSTR) &lpMsgBuf,
  0,
  NULL
  );
 // Process any inserts in lpMsgBuf.
 // ...
 // get the string.
 CString strMsg((LPCTSTR)lpMsgBuf);
 // Free the buffer.
 LocalFree( lpMsgBuf );

 strMsg.TrimRight(_T("/r/n"));
 return strMsg;
}

/
//
// IN
// DWORD dwError  错误号,默认值(0xFFFFFFFF)表示直接获取本线程的最后错误号
//
// OUT
// CString    系统生成的错误信息串以及错误号的十进制值
//
static CString GetErrorMsgAndCode(DWORD dwError = 0xFFFFFFFF)
{
 dwError = (dwError == 0xFFFFFFFF) ? GetLastError() : dwError;

 CString strMsg;
 strMsg.Format(_T("%s (%d)"), GetErrorMsg(dwError), dwError);
 return strMsg;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值