windows核心编程第一章:ErrorShow.cpp
windows核心编程第一章:ErrorShow.cpp
前言
本章对错误信息的处理
DWORD GetLastError();
VOID SetLastError(DWORD dwErrCode):
如果我在自己写的程序中检测到一个错误,我可能希望向用户显示文本描述,而不是显示个干巴巴的错误编号。Windows提供了一个函数,可以将错误代码转换为相应的文本描述此函数名为FormatMessage,如下所示:
```cpp
DWORD FormatMessage
(
DWORD dwFlags,
LPCVOID pSource
DWORD dwMessageld
DWORD dwLanguageId
PTSTR pszBuffer.
DWORD nSize
va list *Arguments
)
FormatMessage的功能实际相当丰富,为了构造要向用户显示的字符串,它是首选的一种方式。之所以说它好用,一个原因是它能轻松地支持多种语言(译注:这里的语言是自然语言,比如汉语、英语等等,而不是计算机编程语言)。它能获取一个语言标识符作为参数,并返回那种语言的文本。当然,你首先必须翻译好字符串,并将翻译好的消息表(message table)资源嵌入自己的.exe 或 DLL 模块中。但在此之后,这个函数就能自动选择正确的字符串。ErrorShow 示例程序(参见后文)演示了如何调用这个函数将Microsoft 定义的错误代码编号转换为相应的文本描述。
自定义错误信息
定义的时候需要符合相关的规定,规定如下
ErrorShow.cpp
/******************************************************************************
01_ErrorShow.cpp
windows核心编程(2024)
windoesx.h头文件
展示了如何获取错误代码的文本描述的方法
(c)by zhangYongJiang
******************************************************************************/
#include "..\CommonFiles\CmnHdr.h" /* 编译配置头文件 */
#include <Windowsx.h> //消息处理宏
#include <tchar.h> //通用类型
#include <winerror.h> //错误代码定义文件
#include "Resource.h"
///
//自定义消息
#define ESM_POKECODEANDLOOKUP (WM_USER + 100)
//const TCHAR g_szAppName[] = TEXT("Error Show");
///
INT_PTR WINAPI Dlg_Proc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void Dlg_OnCommand(HWND hw