如果FORMAT_MESSAGE_ALLOCATE_BUFFER标誌没有被指定,这个参数必须指定为输出缓冲区的大小,如果指定值为0,这个参数指定为分配给输出缓冲区的最小数 。Arguments保存格式化信息中的插入值的一个数组 。返回值如果函式调用成功,返回输出缓冲区的大小,除最后一个空字元 。如果失败则返回0 。举例【FormatMessage】// 系统错误信息提示 。void TestErrorInfo(void){ //进行出错 。 if (!CreateDirectory(_T("c:\\"),0)) { TCHAR szBuf[128]; LPVOID lpMsgBuf; DWORD dw = GetLastError(); FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); wsprintf(szBuf, _T("%s 出错信息 (出错码=%d): %s"), _T("CreateDirectory"), dw, lpMsgBuf); LocalFree(lpMsgBuf); //输出提示 。 OutputDebugString(szBuf); }}调用后输出下面的提示信息:CreateDirectory 出错信息 (出错码=5): 拒绝访问 。需求客户端需要Windows XP、Windows 2000 Professional、Windows NT Workstation、Windows Me、Windows 98或Windows 95 。伺服器需要Windows Server 2003、Windows 2000 Server或Windows NT Server 。头档案在Winbase.h中声明,包含于Windows.h 。库档案Kernel32.lib 。DLL需要Kernel32.dll 。Unicode以FormatMessageW (Unicode)和FormatMessageA (ANSI)的形式实现 。