设为首页 加入收藏

TOP

13.6.3 ProcessErrorMessage()函数的实现
2013-10-07 14:36:10 来源: 作者: 【 】 浏览:55
Tags:13.6.3 ProcessErrorMessage 函数 实现

13.6.3  ProcessErrorMessage()函数的实现

ProcessErrorMessage()函数负责处理并提示错误信息,实现如下:

  1. 01  void CMySerial::ProcessErrorMessage(char* ErrorText)  
  2. 02  {  
  3. 03      char *Temp = new char[200];  
  4. 04      LPVOID lpMsgBuf;                                //保存错误信息的指针  
  5. 05      //将GetLastError()得到的错误信息转化成字符串信息  
  6. 06      FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |   
  7. 07                      FORMAT_MESSAGE_FROM_SYSTEM,  
  8. 08                      NULL,  
  9. 09                      GetLastError(),  
  10. 10                      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),  
  11. 11                      (LPTSTR) &lpMsgBuf,  
  12. 12                      0,  
  13. 13                      NULL );  
  14. 14      sprintf(Temp, "WARNING:  %s Failed with the following error:        \n%s\nPort: %d\n",  
  15. 15           (char*)ErrorText, lpMsgBuf, m_nPortNr);    //整合完成的错误信息  
  16. 16      MessageBox(NULL, Temp, "Application Error", MB_ICONSTOP);                                                       //提示错误信息  
  17. 17      LocalFree(lpMsgBuf);                            //释放资源  
  18. 18      delete [] Temp;  
  19. 19  } 

【代码解析】

第6~13行调用FormatMessage()函数,将GetLastError()函数返回的错误号转化成字符串信息。第14、15行将刚刚转化的字符串信息与错误发生的位置,整合成一个完成错误信息字符串保存到Temp所指向的空间上。第16行调用MessageBox()函数将整合后的信息弹出给用户。

FormatMessage()函数原型如下:

  1. DWORD FormatMessageA(   
  2.     DWORD       dwFlags,        //错误信息类型标志  
  3.     LPCVOID lpSource,       //指定本地信息定义,其依赖于第一个参数的设置  
  4.     DWORD   dwMessageId,    //指定被请求的消息标示  
  5.     DWORD   dwLanguageId,   //指定被请求的消息语言标示  
  6.     LPSTR   lpBuffer,       //指向一个格式化消息缓冲区  
  7.     DWORD   nSize,          //指定输出缓冲区大小  
  8.     va_list *Arguments  //指向在格式化消息中被用来插入数值的一个32位数值的数组  
  9. ); 


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.6.4 串口线程函数的实现 下一篇13.6.2 串口打开函数的实现

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: