• VC++之GetLastError()使用说明


    VC中GetLastError()获取错误信息的使用

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

    #include <stdio.h>
    #include <windows.h>

    int WINAPI WinMain
    (
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
    )
    {
        LPVOID lpMsgBuf;
        FormatMessage(
            FORMAT_MESSAGE_ALLOCATE_BUFFER|
            FORMAT_MESSAGE_FROM_SYSTEM|
            FORMAT_MESSAGE_IGNORE_INSERTS,
            NULL,
            GetLastError(),
            MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
            (LPTSTR)&lpMsgBuf,
            0,
            NULL
            );
        //PROCESS ANY INSERTS IN lpMsgBuf.
        //DISPLAY THE STRING.
        MessageBox(NULL,(LPCTSTR)lpMsgBuf,"Error",MB_OK | MB_ICONINFORMATION);
        //FREE THE BUFF.
        LocalFree(lpMsgBuf);
        return 0;
    }

    〖0〗-操作成功完成。
    〖1〗-功能错误。
    〖2〗-系统找不到指定的文件。
    〖3〗-系统找不到指定的路径。
    〖4〗-系统无法打开文件。
    〖5〗-拒绝访问。
    〖6〗-句柄无效。
    〖7〗-存储控制块被损坏。
    〖8〗-存储空间不足,无法处理此命令。
    〖9〗-存储控制块地址无效。
    〖10〗-环境错误。

  • 相关阅读:
    ubuntu14.04 允许root用ssh登录
    MySQL(Navicat)运行.sql文件时报错:[Err] 2006
    Ubuntu14.04 安装git
    Ubuntu14.04下安装redis
    ubuntu apt-get update 失败解决
    检出商品详情中的图片并替换url
    nohup和&后台运行,进程查看及终止
    ubuntu 的chmod 和 chown
    php5.4安装fileinfo扩展
    crontab
  • 原文地址:https://www.cnblogs.com/milantgh/p/3955838.html
Copyright © 2020-2023  润新知