C++定义自己的错误代码(FormatMessage)

来源:互联网 发布:adams软件简介 编辑:程序博客网 时间:2024/06/06 20:26

The FormatMessage function can be used to obtain error message strings for the system error codes returned by GetLastError, as shown in the following sample code.

LPVOID lpMsgBuf;FormatMessage(     FORMAT_MESSAGE_ALLOCATE_BUFFER |     FORMAT_MESSAGE_FROM_SYSTEM |     FORMAT_MESSAGE_IGNORE_INSERTS,    NULL,    GetLastError(),    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language    (LPTSTR) &lpMsgBuf,    0,    NULL );// Process any inserts in lpMsgBuf.// ...// Display the string.MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );// Free the buffer.LocalFree( lpMsgBuf );
CSerialPort串口类中自己定义的错误代码程序如下:(Remon Spekreijse写的一个串口类, 地址在:  

 http://codeguru.earthweb.com/network/serialport.shtml)

void CSerialPort::ProcessErrorMessage(char* ErrorText)
{
 char *Temp = new char[200];
 
 LPVOID lpMsgBuf;
 FormatMessage( 
  FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
  NULL,
  GetLastError(),
  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
  (LPTSTR) &lpMsgBuf,
  0,
  NULL
 );
 sprintf(Temp, "WARNING:  %s Failed with the following error: /n%s/nPort: %d/n", (char*)ErrorText, lpMsgBuf, m_nPortNr); 
 MessageBox(NULL, Temp, "Application Error", MB_ICONSTOP);
 LocalFree(lpMsgBuf);
 delete [] Temp;
}
原创粉丝点击