メッセージの文字列を指定の書式で取得する
Declare Function FormatMessage Lib "kernel32.dll" Alias "FormatMessageA" _
(ByVal dwFlags As Long, ByVal lpSource As Any, ByVal dwMessageId As Long, _
ByVal dwLanguageId As Long, ByVal lpBuffer As String, _
ByVal nSize As Long, Arguments As Long) As Long
Declare Function FormatMessage Lib "kernel32.dll" Alias "FormatMessageA" _
(ByVal dwFlags As Integer, ByVal lpSource As Integer, _
ByVal dwMessageId As Integer, ByVal dwLanguageId As Integer, _
ByVal lpBuffer As String, ByVal nSize As Integer, _
Arguments As Integer) As Integer
DWORD FormatMessage(
DWORD dwFlags,
LPCVOID lpSource,
DWORD dwMessageId,
DWORD dwLanguageId,
LPTSTR lpBuffer,
DWORD nSize,
va_list *Arguments
);
引数
dwFlags
書式化の方法とlpSourceの意味を指定する定数の組み合わせlpSource
メッセージを定義した位置を指定する(タイプは、dwFlagsの設定に依存する)dwMessageId
32ビットのメッセージID(dwFlagsがFORMAT_MESSAGE_FROM_STRINGSのとき無効)dwLanguage
32ビットの言語ID(dwFlagsがFORMAT_MESSAGE_FROM_STRINGSのとき無効)lpBuffer
(戻り値)書式化後のメッセージを受け取るバッファnSize
FORMAT_MESSAGE_ALLOCATE_BUFFERが指定されなかったときArgunents
バッファにコピーされる最大バイト数
書式化後のメッセージ内に挿入される32ビット値の配列戻り値
正常終了のとき バッファにコピーしたバイト数備考
エラーのとき 0
この関数は、英語とフランス語のように名詞と形容詞の位置が逆の場合などにdwFlagsの定数
単語を並び替えるとかの操作をするために用意されたものである。
Visual Basicではエラーメッセージをテキスト化するときに使われることが多い。
FORMAT_MESSAGE_ALLOCATE_BUFFER = &H100 nSizeデ指定したサイズのバッファを確保する
FORMAT_MESSAGE_IGNORE_INSERTS = &H200 バッファに引数を挿入しない
FORMAT_MESSAGE_FROM_STRING = &H400 lpSourceはメッセージを定義する文字列
(FORMAT_MESSAGE_FROM_HMODULE、または
FORMAT_MESSAGE_FROM_SYSTEMと組み合わせ不可)
FORMAT_MESSAGE_FROM_MODULE = &H800 lpSouceはメッセージテーブルリソースを
持つモジュールのハンドル
(FORMAT_MESSAGE_FROM_STRINGと組み合わせ不可)
lpSourceが0のとき、カレントプロセスの
モジュールを検索する
FORMAT_MESSAGE_FROM_SYSTEM = &H1000 システムメッセージリソースを検索する
FORMAT_MESSAGE_ARGUMENT_ARRAY = &H2000 Argumentはva_list構造体ではない。
(dwFlagsの下位バイトの意味を指定する定数)
0 すべての文字を出力する
FORMAT_MESSAGE_MAX_WIDTH_MASK = &HFF 出力する最大バイト数
0でも&HFFでもないとき メッセージ中の改行を無視する