请输入您要查询的百科知识:

 

词条 FormatMessage
释义

函数说明

FormatMessage功能就是将GetLastError得到的错误信息(这个错误信息是数字代号)转化成字符串信息的函数

FormatMessage()

函数FormatMessage声明如下:

DWORD WINAPI FormatMessage(

__in DWORD dwFlags,

__in_opt LPCVOID lpSource,

__in DWORD dwMessageId,

__in DWORD dwLanguageId,

__out LPTSTR lpBuffer,

__in DWORD nSize,

__in_opt va_list *Arguments

);

参数说明:

dwFlags:

标志位,决定如何说明lpSource参数,dwFlags的低位制定如何处理换行功能在输出缓冲区,也决定最大宽度的格式化输出行。

可选参数:

标志 标志说明

FORMAT_MESSAGE_ALLOCATE_BUFFER
0x00000100 函数会分配一个足够大的缓冲区保存格式化消息,并且通过lpBuffer指向该
地址。

FORMAT_MESSAGE_ARGUMENT_ARRAY
0x00002000 Arguments参数不是指向va_list结构体,但是是一个指向保存参数的数据。

FORMAT_MESSAGE_FROM_HMODULE
0x00000800 lpSource参数是需要去搜索的一个包含消息表的模块线程。如果lpSource
是NULL,当前进程的应用图像会被搜索,这个标志不能同FORMAT_ME
SSAGE_FROM_STRING使用。

FORMAT_MESSAGE_FROM_STRING
0x00000400 lpSource参数是一个指向以NULL结尾的字符串,字符串包含一个消息定义,
这个消息定义可以包含插入序列。此标志最好不要和FORMAT_MESSAGE_F
ROM_HMODULE或者FORMAT_MESSAGE_FROM_SYSTEM使用

FORMAT_MESSAGE_FROM_SYSTEM
0x00001000 函数会为了请求的信息而搜索系统的消息表资源。如果标志同时也指定了
FORMAT_MESSAGE_FROM_HMODULE,那么函数会先在lpSource指定
的模块中搜索请求的消息,如果搜索不到,就去搜索系统消息表资源。此
标志不能与FORMAT_MESSAGE_FROM_STRING使用。

FORMAT_MESSAGE_IGNORE_INSERTS
0x00000200 消息定义中的插入序列会被一直忽略和跳过直到输出缓冲区不改变,并且
Arguments会被忽略。

lpSource:

根据dwFlags标志而定。

dwMessageId:

请求的消息的标识符。当dwFlags标志为FORMAT_MESSAGE_FROM_STRING时会被忽略。

dwLanguageId:

请求的消息的语言标识符。

nSize:

如果FORMAT_MESSAGE_ALLOCATE_BUFFER标志没有被指定,这个参数必须指定为输出缓冲区的大小,

如果指定,这个参数指定为分配给输出缓冲区的最小数。

Arguments:

保存格式化信息中的插入值的一个数组。

返回值

如果函数调用成功,返回输出缓冲区的大小,除最后一个空字符。如果失败侧返回0。

举列

#001 //系统错误信息提示。

#002 //蔡军生 2007/11/28 QQ:9073204 深圳

#003 void TestErrorInfo(void)

#004 {

#005 //进行出错。

#006 if (!CreateDirectory(_T("c:\\\\"),0))

#007 {

#008 TCHAR szBuf[128];

#009 LPVOID lpMsgBuf;

#010 DWORD dw = GetLastError();

#011

#012 FormatMessage(

#013 FORMAT_MESSAGE_ALLOCATE_BUFFER |

#014 FORMAT_MESSAGE_FROM_SYSTEM,

#015 NULL,

#016 dw,

#017 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

#018 (LPTSTR) &lpMsgBuf,

#019 0, NULL );

#020

#021 wsprintf(szBuf,

#022 _T("%s 出错信息 (出错码=%d): %s"),

#023 _T("CreateDirectory"), dw, lpMsgBuf);

#024

#025 LocalFree(lpMsgBuf);

#026

#027 //输出提示。

#028 OutputDebugString(szBuf);

#029 }

#030

#031 }

调用后输出下面的提示信息:

CreateDirectory 出错信息 (出错码=5): 拒绝访问。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/25 3:41:34