Windows API : 系統錯誤資訊字串擷取

來源:互聯網
上載者:User

還在不斷的切換到 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;
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.