FormatMessage

機能
メッセージの文字列を指定の書式で取得する
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
備考
この関数は、英語とフランス語のように名詞と形容詞の位置が逆の場合などに
単語を並び替えるとかの操作をするために用意されたものである。
Visual Basicではエラーメッセージをテキスト化するときに使われることが多い。
dwFlagsの定数

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でもないとき                             メッセージ中の改行を無視する