关于 WinError.h 和 GetLastError 和 VC2008解决方案

关于 WinError.h 和 GetLastError 和 VC2008
如果你有《windows核心编程》可以翻到第四页和第五页。如果没书可以看 WinError.h

在第四页,书上摘录了一部分 WinError.h 的代码。
第五页说:每个错误都有三种表示:一个消息ID,消息文本和一个编号

运行第五页的代码

C/C++ code
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, PTSTR pszCmdLine, int)
{
    HANDLE hFile = CreateFile( TEXT("C:\\JEFF"), 0, 0, NULL, OPEN_EXISTING, 0, NULL);
    return 0; //在这行设个断点
}


然后运行程序,在 watch 窗口中找一个空行上,在名称中输入 $err,hr, 然后查看后面的值

问题:
1、 WinError.h 中的文本是注释掉的,watch 窗口中的value字段是怎么产生文本消息
2、 我用的VC2008是中文版的, WinError.h 中被注释掉的文本是英文的,但 watch 窗口中显示的是中文的。怎么回事?

------解决方案--------------------
不是$err,hr,是@err,hr吧

------解决方案--------------------
调试器不需要用到WinError.h
有相关api可以得到错误码的文字描述,比如FormatMessage