ErrorLookUp


      // Get the error code
      DWORD dwError = GetDlgItemInt(IDC_ERRORCODE, NULL, FALSE);

      HLOCAL hlocal = NULL;   // Buffer that gets the error message string

      // Get the error code's textual description
      BOOL fOk = FormatMessage(
         FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, 
         NULL, dwError, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), 
         (PTSTR) &hlocal, 0, NULL);

      if (!fOk) {
         // Is it a network-related error?
         HMODULE hDll = LoadLibraryEx(TEXT("netmsg.dll"), NULL, 
            DONT_RESOLVE_DLL_REFERENCES);

         if (hDll != NULL) {
            FormatMessage(
               FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_SYSTEM,
               hDll, dwError, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
               (PTSTR) &hlocal, 0, NULL);
            FreeLibrary(hDll);
         }
      }

      if (hlocal != NULL) {
         SetDlgItemText( IDC_ERRORTEXT, (PCTSTR) LocalLock(hlocal));
         LocalFree(hlocal);
      } else {
         SetDlgItemText(IDC_ERRORTEXT, TEXT("Error number not found."));
      }	

第一个代码行用于从编辑控件中检索错误代码的号码。然后,建立一个内存块的句柄并将
它初始化为N U L L。F o r m a t M e s s a g e函数在内部对内存块进行分配,并将它的句柄返回给我们。

当调用F o r m a t M e s s a g e函数时,传递了F O R M AT M E S S A G E F R O M S Y S T E M标志。该标
志告诉F o r m a t M e s s a g e函数,我们想要系统定义的错误代码的字符串。还传递了F O R M AT _
M E S S A G E A L L O C AT E B U F F E R标志,告诉该函数为错误代码的文本描述分配足够大的内存
块。该内存块的句柄将在h l o c a l变量中返回。第三个参数指明想要查找的错误代码的号码,第
四个参数指明想要文本描述使用什么语言。
如果F o r m a t M e s s a g e函数运行成功,那么错误代码的文本描述就位于内存块中,将它拷贝
到对话框底部的滚动窗口中。如果F o r m a t M e s s a g e函数运行失败,设法查看N e t M s g . d l l模块中的
消息代码,以了解该错误是否与网络有关。使用N e t M s g . d l l 模块的句柄,再次调用
F o r m a t M e s s a g e函数。你会看到,每个D L L(或. e x e)都有它自己的一组错误代码,可以使用
Message Compiler(M C . e x e)将这组错误代码添加给该模块,并将一个资源添加给该模块。这
就是Visual Studio的Error Lookup工具允许你用M o d u l e s对话框进行的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值