今天写代码时遇到了问题,还是之前这个启动画面问题。昨天我写了三篇文章就少位图的内部存储信息。就是因为我在写代码的时候遇到了问题。
这是我之前的代码,执行之后没有显示出位图文件,于是断点查,最后发现,hbmp为NULL,就是说LoadImage函数调用失败,就有了昨天的三个位图文章。今天继续写代码,又发现问题了!因为我在处理位图的后缀转换之前就考虑过路径的问题,结果发现不是路径的问题。最后发现时图片后缀的问题(我是由jpg转换来的bmp图片),现在修改好了后缀的问题,结果还是错误!后来我就想到调用getlasterror函数来测试。
我们看看代码图:
getlasterror函数的使用必须在错误的代码后面调用。我们知道出错的代码就是在hbmp这句,因此在这里调用它。断点调试:
发现dw值为2。下面我们看下getlast函数的介绍:
〖0〗-操作成功完成。
〖1〗-功能错误。
〖2〗-系统找不到指定的文件。
〖3〗-系统找不到指定的路径。
〖4〗-系统无法打开文件。
〖5〗-拒绝访问。
〖6〗-句柄无效。
〖7〗-存储控制块被损坏。
〖8〗-存储空间不足,无法处理此命令。
〖9〗-存储控制块地址无效。
〖10〗-环境错误。
〖11〗-试图加载格式错误的程序。
〖12〗-访问码无效。
〖13〗-数据无效。
〖14〗-存储器不足,无法完成此操作。
〖15〗-系统找不到指定的驱动器。
〖16〗-无法删除目录。
〖17〗-系统无法将文件移到不同的驱动器。
〖18〗-没有更多文件。
〖19〗-介质受写入保护。
〖20〗-系统找不到指定的设备。
〖21〗-设备未就绪。
〖22〗-设备不识别此命令。
〖23〗-数据错误 (循环冗余检查)。
〖24〗-程序发出命令,但命令长度不正确。
〖25〗-驱动器无法找出磁盘上特定区域或磁道的位置。
〖26〗-无法访问指定的磁盘或软盘。
〖27〗-驱动器找不到请求的扇区。
〖28〗-打印机缺纸。
〖29〗-系统无法写入指定的设备。
〖30〗-系统无法从指定的设备上读取。
〖31〗-连到系统上的设备没有发挥作用。
〖32〗-进程无法访问文件,因为另一个程序正在使用此文件。
〖33〗-进程无法访问文件,因为另一个程序已锁定文件的一部分。
〖36〗-用来共享的打开文件过多。
〖38〗-到达文件结尾。
〖39〗-磁盘已满。
〖50〗-不支持网络请求。
〖51〗-远程计算机不可用 。
〖52〗-在网络上已有重复的名称。
〖53〗-找不到网络路径。
〖54〗-网络忙。
〖55〗-指定的网络资源或设备不再可用。
〖56〗-已到达网络 BIOS 命令限制。
〖57〗-网络适配器硬件出错。
〖58〗-指定的服务器无法运行请求的操作。
〖59〗-发生意外的网络错误。
〖60〗-远程适配器不兼容。
〖61〗-打印机队列已满。
〖62〗-无法在服务器上获得用于保存待打印文件的空间。
〖63〗-删除等候打印的文件。
〖64〗-指定的网络名不再可用。
〖65〗-拒绝网络访问。
〖66〗-网络资源类型错误。
〖67〗-找不到网络名。
〖68〗-超过本地计算机网卡的名称限制。
〖69〗-超出网络 BIOS 会话限制。
〖70〗-远程服务器已暂停,或正在启动过程中。
〖71〗-当前已无法再同此远程计算机连接,因为已达到计算机的连接数目极限。
〖72〗-已暂停指定的打印机或磁盘设备。
〖80〗-文件存在。
〖82〗-无法创建目录或文件。
〖83〗-INT 24 失败。
〖84〗-无法取得处理此请求的存储空间。
〖85〗-本地设备名已在使用中。
〖86〗-指定的网络密码错误。
〖87〗-参数错误。
〖88〗-网络上发生写入错误。
〖89〗-系统无法在此时启动另一个进程。
〖100〗-无法创建另一个系统信号灯。
〖101〗-另一个进程拥有独占的信号灯。
〖102〗-已设置信号灯且无法关闭。
〖103〗-无法再设置信号灯。
〖104〗-无法在中断时请求独占的信号灯。
〖105〗-此信号灯的前一个所有权已结束。
〖107〗-程序停止,因为替代的软盘未插入。
〖108〗-磁盘在使用中,或被另一个进程锁定。
〖109〗-管道已结束。
〖110〗-系统无法打开指定的设备或文件。
〖111〗-文件名太长。
〖112〗-磁盘空间不足。
〖113〗-无法再获得内部文件的标识。
〖114〗-目标内部文件的标识不正确。
〖117〗-应用程序制作的 IOCTL 调用错误。
〖118〗-验证写入的切换参数值错误。
〖119〗-系统不支持请求的命令。
〖120〗-此功能只被此系统支持。
〖121〗-信号灯超时时间已到。
〖122〗-传递到系统调用的数据区太小。
〖123〗-文件名、目录名或卷标语法不正确。
〖124〗-系统调用级别错误。
〖125〗-磁盘没有卷标。
〖126〗-找不到指定的模块。
〖127〗-找不到指定的程序。
〖128〗-没有等候的子进程。
〖130〗-试图使用操作(而非原始磁盘 I/O)的已打开磁盘分区的文件句柄。
〖131〗-试图移动文件指针到文件开头之前。
〖132〗-无法在指定的设备或文件上设置文件指针。
〖133〗-包含先前加入驱动器的驱动器无法使用 JOIN 或 SUBST 命令。
〖134〗-试图在已被合并的驱动器上使用 JOIN 或 SUBST 命令。
〖135〗-试图在已被合并的驱动器上使用 JOIN 或 SUBST 命令。
〖136〗-系统试图解除未合并驱动器的 JOIN。
〖137〗-系统试图解除未替代驱动器的 SUBST。
〖138〗-系统试图将驱动器合并到合并驱动器上的目录。
〖139〗-系统试图将驱动器替代为替代驱动器上的目录。
〖140〗-系统试图将驱动器合并到替代驱动器上的目录。
〖141〗-系统试图替代驱动器为合并驱动器上的目录。
〖142〗-系统无法在此时运行 JOIN 或 SUBST。
〖143〗-系统无法将驱动器合并到或替代为相同驱动器上的目录。
〖144〗-目录并非根目录下的子目录。
〖145〗-目录非空。
〖146〗-指定的路径已在替代中使用。
〖147〗-资源不足,无法处理此命令。
〖148〗-指定的路径无法在此时使用。
〖149〗-企图将驱动器合并或替代为驱动器上目录是上一个替代的目标的驱动器。
〖150〗-系统跟踪信息未在 CONFIG.SYS 文件中指定,或不允许跟踪。
〖151〗-为 DosMuxSemWait 指定的信号灯事件个数错误。
〖152〗-DosMuxSemWait 不可运行。已设置过多的信号灯。
〖153〗-DosMuxSemWait 清单错误。
〖154〗-输入的卷标超过目标文件系统的长度限制
〖155〗-无法创建另一个线程。
〖156〗-接收进程已拒绝此信号。
〖157〗-段已被放弃且无法锁定。
〖158〗-段已解除锁定。
〖159〗-线程标识的地址错误。
〖160〗-传递到 DosExecPgm 的参数字符串错误。
〖161〗-指定的路径无效。
〖162〗-信号已暂停。
〖164〗-无法在系统中创建更多的线程。
〖167〗-无法锁定文件区域。
〖170〗-请求的资源在使用中。
〖173〗-对于提供取消区域进行锁定的请求不明显。
〖174〗-文件系统不支持锁定类型的最小单元更改。
〖180〗-系统检测出错误的段号。
〖183〗-当文件已存在时,无法创建该文件。
〖186〗-传递的标志错误。
〖187〗-找不到指定的系统信号灯名称。
〖196〗-操作系统无法运行此应用程序。
〖197〗-操作系统当前的配置不能运行此应用程序。
〖199〗-操作系统无法运行此应用程序。
〖200〗-代码段不可大于或等于 64K。
〖203〗-操作系统找不到已输入的环境选项。
〖205〗-命令子树中的进程没有信号处理程序。
〖206〗-文件名或扩展名太长。
〖207〗-第 2 环堆栈已被占用。
〖208〗-没有正确输入文件名通配符 * 或 ?,或指定过多的文件名通配符。
〖209〗-正在发送的信号错误。
〖210〗-无法设置信号处理程序。
〖212〗-段已锁定且无法重新分配。
〖214〗-连到该程序或动态链接模块的动态链接模块太多。
〖215〗-无法嵌套调用 LoadModule。
〖230〗-管道状态无效。
〖231〗-所有的管道实例都在使用中。
〖232〗-管道正在关闭中。
〖233〗-管道的另一端上无任何进程。
〖234〗-更多数据可用。
〖240〗-取消会话。
〖254〗-指定的扩展属性名无效。
〖255〗-扩展属性不一致。
〖258〗-等待的操作过时。
〖259〗-没有可用的数据了。
〖266〗-无法使用复制功能。
〖267〗-目录名无效。
〖275〗-扩展属性在缓冲区中不适用。
〖276〗-装在文件系统上的扩展属性文件已损坏。
〖277〗-扩展属性表格文件已满。
〖278〗-指定的扩展属性句柄无效。
〖282〗-装入的文件系统不支持扩展属性。
〖288〗-企图释放并非呼叫方所拥有的多用户终端运行程序。
〖298〗-发向信号灯的请求过多。
〖299〗-仅完成部分的 ReadProcessMemoty 或 WriteProcessMemory 请求。
〖300〗-操作锁定请求被拒绝。
〖301〗-系统接收了一个无效的操作锁定确认。
〖487〗-试图访问无效的地址。
〖534〗-算术结果超过 32 位。
〖535〗-管道的另一端有一进程。
〖536〗-等候打开管道另一端的进程。
〖994〗-拒绝访问扩展属性。
〖995〗-由于线程退出或应用程序请求,已放弃 I/O 操作。
〖996〗-重叠 I/O 事件不在信号状态中。
〖997〗-重叠 I/O 操作在进行中。
〖998〗-内存分配访问无效。
〖999〗-错误运行页内操作。
〖1001〗-递归太深;栈溢出。
〖1002〗-窗口无法在已发送的消息上操作。
〖1003〗-无法完成此功能。
〖1004〗-无效标志。
〖1005〗-此卷不包含可识别的文件系统。请确定所有请求的文件系统驱动程序已加载,且此卷未损坏。
〖1006〗-文件所在的卷已被外部改变,因此打开的文件不再有效。
〖1007〗-无法在全屏幕模式下运行请求的操作。
〖1008〗-试图引用不存在的令牌。
〖1009〗-配置注册表数据库损坏。
〖1010〗-配置注册表项无效。
〖1011〗-无法打开配置注册表项。
〖1012〗-无法读取配置注册表项。
〖1013〗-无法写入配置注册表项。
〖1014〗-注册表数据库中的某一文件必须使用记录或替代复制来恢复。恢复成功完成。
〖1015〗-注册表损坏。包含注册表数据的某一文件结构损坏,或系统的文件内存映像损坏,或因为替代副本、日志缺少或损坏而无法恢复文件。
〖1016〗-由注册表启动的 I/O 操作恢复失败。注册表无法读入、写出或清除任意一个包含注册表系统映像的文件。
〖1017〗-系统试图加载或还原文件到注册表,但指定的文件并非注册表文件格式。
〖1018〗-试图在标记为删除的注册表项上运行不合法的操作。
〖1019〗-系统无法配置注册表日志中所请求的空间。
〖1020〗-无法在已有子项或值的注册表项中创建符号链接。
〖1021〗-无法在易变父项下创建稳定子项。
〖1022〗-通知更改请求正在完成中,且信息并未返回到呼叫方的缓冲区中。当前呼叫方必须枚举文件来查找更改。
〖1051〗-已发送停止控制到服务,该服务被其它正在运行的服务所依赖。
〖1052〗-请求的控件对此服务无效
〖1053〗-服务并未及时响应启动或控制请求。
〖1054〗-无法创建此服务的线程。
〖1055〗-锁定服务数据库。
〖1056〗-服务的实例已在运行中。
〖1057〗-帐户名无效或不存在,或者密码对于指定的帐户名无效。
〖1058〗-无法启动服务,原因可能是它被禁用或与它相关联的设备没有启动。
〖1059〗-指定了循环服务依存。
〖1060〗-指定的服务并未以已安装的服务存在。
〖1061〗-服务无法在此时接受控制信息。
〖1062〗-服务未启动。
〖1063〗-服务进程无法连接到服务控制器上。
〖1064〗-当处理控制请求时,在服务中发生异常。
〖1065〗-指定的数据库不存在。
〖1066〗-服务已返回特定的服务错误码。
〖1067〗-进程意外终止。
〖1068〗-依存服务或组无法启动。
〖1069〗-由于登录失败而无法启动服务。
〖1070〗-启动后,服务停留在启动暂停状态。
〖1071〗-指定的服务数据库锁定无效。
〖1072〗-指定的服务已标记为删除。
〖1073〗-指定的服务已存在。
〖1074〗-系统当前以最新的有效配置运行。
〖1075〗-依存服务不存在,或已被标记为删除。
〖1076〗-已接受使用当前引导作为最后的有效控制设置。
〖1077〗-上次启动之后,仍未尝试引导服务。
〖1078〗-名称已用作服务名或服务显示名。
〖1079〗-此服务的帐户不同于运行于同一进程上的其它服务的帐户。
〖1080〗-只能为 Win32 服务设置失败操作,不能为驱动程序设置。
〖1081〗-这个服务所运行的处理和服务控制管理器相同。所以,如果服务处理程序意外中止的话,服务控制管理器无法进行任何操作。
〖1082〗-这个服务尚未设置恢复程序。
〖1083〗-配置成在该可执行程序中运行的这个服务不能执行该服务。
〖1100〗-已达磁带的实际结尾。
〖1101〗-磁带访问已达文件标记。
〖1102〗-已达磁带或磁盘分区的开头。
〖1103〗-磁带访问已达一组文件的结尾。
〖1104〗-磁带上不再有任何数据。
〖1105〗-磁带无法分区。
〖1106〗-在访问多卷分区的新磁带时,当前的块大小不正确。
〖1107〗-当加载磁带时,找不到分区信息。
〖1108〗-无法锁定媒体弹出功能。
〖1109〗-无法卸载介质。
〖1110〗-驱动器中的介质可能已更改。
〖1111〗-复位 I/O 总线。
〖1112〗-驱动器中没有媒体。
〖1113〗-在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。
〖1114〗-动态链接库 (DLL) 初始化例程失败。
〖1115〗-系统关机正在进行。
〖1116〗-因为没有任何进行中的关机过程,所以无法中断系统关机。
〖1117〗-因为 I/O 设备错误,所以无法运行此项请求。
〖1118〗-没有串行设备被初始化成功。串行驱动程序将卸载。
〖1119〗-无法打开正在与其他设备共享中断请求(IRQ)的设备。至少有一个使用该 IRQ 的其他设备已打开。
〖1120〗-序列 I/O 操作已由另一个串行口的写入完成。(IOCTL_SERIAL_XOFF_COUNTER 已达零。)
〖1121〗-因为已过超时时间,所以串行 I/O 操作完成。(IOCTL_SERIAL_XOFF_COUNTER 未达零。)
〖1122〗-在软盘上找不到 ID 地址标记。
〖1123〗-软盘扇区 ID 字符域与软盘控制器磁道地址不相符。
〖1124〗-软盘控制器报告软盘驱动程序不能识别的错误。
〖1125〗-软盘控制器返回与其寄存器中不一致的结果。
〖1126〗-当访问硬盘时,重新校准操作失败,重试仍然失败。
〖1127〗-当访问硬盘时,磁盘操作失败,重试仍然失败。
〖1128〗-当访问硬盘时,即使失败,仍须复位磁盘控制器。
〖1129〗-已达磁带结尾。
〖1130〗-服务器存储空间不足,无法处理此命令。
〖1131〗-检测出潜在的死锁状态。
〖1132〗-指定的基址或文件偏移量没有适当对齐。
〖1140〗-改变系统供电状态的尝试被另一应用程序或驱动程序否决。
〖1141〗-系统 BIOS 改变系统供电状态的尝试失败。
〖1142〗-试图在一文件上创建超过系统允许数额的链接。
〖1150〗-指定程序要求更新的 Windows 版本。
〖1151〗-指定程序不是 Windows 或 MS-DOS 程序。
〖1152〗-只能启动该指定程序的一个实例。
〖1153〗-该指定程序适用于旧的 Windows 版本。
〖1154〗-执行该应用程序所需的库文件之一被损坏。
〖1155〗-没有应用程序与此操作的指定文件有关联。
〖1156〗-在输送指令到应用程序的过程中出现错误。
〖1157〗-执行该应用程序所需的库文件之一无法找到。
〖1158〗-当前程序已使用了 Window 管理器对象的系统允许的所有句柄。
〖1159〗-消息只能与同步操作一起使用。
〖1160〗-指出的源元素没有媒体。
〖1161〗-指出的目标元素已包含媒体。
〖1162〗-指出的元素不存在。
〖1163〗-指出的元素是未显示的存储资源的一部分。
〖1164〗-显示设备需要重新初始化,因为硬件有错误。
〖1165〗-设备显示在尝试进一步操作之前需要清除。
〖1166〗-设备显示它的门仍是打开状态。
〖1167〗-设备没有连接。
〖1168〗-找不到元素。
〖1169〗-索引中没有同指定项相匹配的项。
〖1170〗-在对象上不存在指定的属性集。
〖1171〗-传递到 GetMouseMovePoints 的点不在缓冲区中。
〖1172〗-跟踪(工作站)服务没运行。
〖1173〗-找不到卷 ID。
〖1175〗-无法删除要被替换的文件。
〖1176〗-无法将替换文件移到要被替换的文件。要被替换的文件保持原来的名称。
〖1177〗-无法将替换文件移到要被替换的文件。要被替换的文件已被重新命名为备份名称。
〖1178〗-卷更改记录被删除。
〖1179〗-卷更改记录服务不处于活动中。
〖1180〗-找到一份文件,但是可能不是正确的文件。
〖1181〗-日志项从日志中被删除。
〖1200〗-指定的设备名无效。
〖1201〗-设备当前未连接上,但其为一个记录连接。
〖1202〗-企图记录先前已被记录的设备。
〖1203〗-无任何网络提供程序接受指定的网络路径。
〖1204〗-指定的网络提供程序名称无效。
〖1205〗-无法打开网络连接配置文件。
〖1206〗-网络连接配置文件损坏。
〖1207〗-无法枚举空载体。
〖1208〗-发生扩展错误。
〖1209〗-指定的组名格式无效。
〖1210〗-指定的计算机名格式无效。
〖1211〗-指定的事件名格式无效。
〖1212〗-指定的域名格式无效。
〖1213〗-指定的服务名格式无效。