windows错误码返回文本信息的封装类

原创 2008年09月24日 21:41:00
写个实用的小类,用于输出win的错误码文本信息,因为直接使用FormatMessage确实会繁琐一点。所以将类设计成
函数对象的形式。默认以英文、方式输出,省去了自己设定语言类别的麻烦。当然自己可以设定语言类别(参看
MSDN)。

/// 声明
  1. /**
  2. * @author   roofalison
  3. * @date     2008-09-24-14:03
  4. * @class        windows错误码显示类
  5. */
  6. #ifndef WIN_ERR_MESSAGE_H
  7. #define WIN_ERR_MESSAGE_H
  8. #include <windows.h>
  9. #include <string>
  10. using std::string;
  11. class WinErrMessage
  12. {
  13. public :
  14.     WinErrMessage(
  15.         DWORD dwErrCode = 0, 
  16.         DWORD dwLanguageID = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) );
  17.     ~WinErrMessage();
  18.     void setErrCode(DWORD dwErrCode);
  19.     void setLangID(DWORD dwLangID);
  20.     operator string();
  21.     
  22. private :
  23.     DWORD   m_dwErrCode;
  24.     DWORD   m_dwLanguageID;
  25.     bool    m_bChanged;
  26.     string  m_strErrMessage;
  27. };
  28. #endif
/// 实现

  1. /**
  2. * @author   roofalison
  3. * @date     2008-09-24-14:03
  4. */
  5. #include "WinErrMessage.h"
  6. WinErrMessage::WinErrMessage(DWORD dwErrCode, DWORD dwLanguageID)
  7.     : m_dwErrCode(dwErrCode), m_dwLanguageID(dwLanguageID), m_bChanged(true)
  8. {
  9. }
  10. WinErrMessage::~WinErrMessage()
  11. {
  12. }
  13. void WinErrMessage::setErrCode(DWORD dwErrCode)
  14. {
  15.     if (m_dwErrCode != dwErrCode)
  16.     {
  17.         m_bChanged = true;
  18.         m_dwErrCode = dwErrCode;
  19.     }
  20. }
  21. void WinErrMessage::setLangID(DWORD dwLanguageID)
  22. {
  23.     if (m_dwLanguageID != dwLanguageID)
  24.     {
  25.         m_bChanged = true;
  26.         m_dwLanguageID = dwLanguageID;
  27.     }
  28. }
  29. WinErrMessage::operator string()
  30. {
  31.     if (m_bChanged)
  32.     {
  33.         HLOCAL hLocal = NULL;
  34.         BOOL bOK = ::FormatMessage(
  35.             FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
  36.             NULL,
  37.             m_dwErrCode,
  38.             m_dwLanguageID,
  39.             (LPTSTR)&hLocal,
  40.             0,
  41.             NULL
  42.         );
  43.         m_strErrMessage = bOK ? string(static_cast<const char*>(hLocal)) : "";
  44.         if (NULL != hLocal)
  45.         {
  46.             ::LocalFree(hLocal);
  47.         }
  48.         m_bChanged = false;
  49.     }
  50.     return m_strErrMessage;
  51. }
// 示例

  1. #include "WinErrMessage.h"
  2. #include <iostream>
  3. #include <windows.h>
  4. using namespace std;
  5. int main()
  6. {
  7.     WinErrMessage win(0x32);
  8.     cout << static_cast<string>(win) << endl;
  9.     win.setErrCode(0x11);
  10.     cout << static_cast<string>(win) << endl;
  11.     win.setLangID( MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED) );
  12.     cout << static_cast<string>(win) << endl;
  13.     string str = win;
  14.     cout << str << endl;
  15.     cout << static_cast<string>(WinErrMessage(0x11)) << endl;
  16.     return 0;
  17. }

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

微信企业号根据错误码返回错误信息类封装

微信企业号根据错误码返回错误信息类封装
  • rzg813
  • rzg813
  • 2014-10-25 23:37
  • 13200

Android基础入门教程——7.5.6 WebView处理网页返回的错误码信息

嘿嘿,假如你们公司是做HTML5端的移动APP的,就是通过WebView来显示网页的,假如你访问的网页 不存在,或者其他错误,报404,401,403,30X等错误的状态码,如果直接弹出WebVie...

一个处理数据库异常的类,按照错误码弹出提示信息

public class MyErrorContext { public static class MyError { int errno; String szErrorDesc; pub...

多文件带参数上传及多文件文本信息上传工具类的封装

下述代码包含了以下几个部分的封装: #pragma mark - 获取单例对象 #pragma mark - 由于请求体是添加的二进制数据,故用nsdata作为返回值 #pragma mar...

Linux的 错误码信息 windows的错误码信息

Linux的 错误码信息 windows的错误码信息

linux下错误码错误信息提取

socket_server.cpp #include #include #include #include #include #include #include ...

Oracle 错误码信息速查

  • 2011-10-08 23:55
  • 1.76MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)