getlasterrror用法

来源:互联网 发布:我的老婆是警花知君txt 编辑:程序博客网 时间:2024/06/14 07:30

在VC中编写应用程序时,经常需要涉及到错误处理问题。许多函数调用只用TRUE和FALSE来表明函数的运行结果。一旦出现错误,MSDN中往往会指出请用GetLastError()函数来获得错误原因。 
     可问题是,GetLastError()返回的只是一个双字节数值(DWORD)。OH,MY GOD!目前Win32的出错编号已经从0排到11031,而这还不是错误编码的全部。因为错误代码还在不断增加。 
     我想没有人愿意自己去查出错编码所对应的错误信息。好在Windows(Windows95以上, Window NT 3.1以上)已经提供了现成的错误信息处理函数:FormatMessage()。 以下是用FormatMessage()得到由GetLastError()返回的出错编码所对应错误信息的示例: 
     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. 
     //显示错误信息 
     MessageBox(  (LPCTSTR)lpMsgBuf); 
     
     // Free the buffer. 
     LocalFree( lpMsgBuf );

windowsAPI函数所以头文件--#include<windows.h>

FormatMessage()功能就是将GetLastError得到的错误信息(这个错误信息是数字代号)转化成字符串信息的函数

  函数FormatMessage声明如下:

  WINBASEAPI

       DWORD WINAPI FormatMessageA(

                              DWORD dwFlags,      //错误信息类型标志

                              LPCVOID lpSource,   //指定本地信息定义 其依赖于第一个参数的设置

                              DWORD dwMessageId,  //指定被请求的消息标示,如果dwFlags设置

                                                                    //为 FORMAT_MESSAGE_FROM_STRING 这个参数将被忽略

                              DWORD dwLanguageId,  //指定被请求的消息的语言标示

                              LPSTR lpBuffer,   //用来保存格式话后的消息字符串的地址

                              DWORD nSize,   //如果第一个参数为指定FORMAT_MESSAGE_ALLOCATE_BUFFER

                                                             // 这个参数就是字符串的最大长度

                              va_list * Arguments

  );