文字列をワイド文字列(Unicode)にマップします。この関数によってマップした文字列がマルチバイト文字セットに含まれるとは限りません。
int MultiByteToWideChar( UINT CodePage, // コードページ DWORD dwFlags, // 文字の種類を指定するフラグ LPCSTR lpMultiByteStr, // マップ元文字列のアドレス int cchMultiByte, // マップ元文字列のバイト数 LPWSTR lpWideCharStr, // マップ先ワイド文字列を入れるバッファのアドレス int cchWideChar // バッファのサイズ );
合成文字は、それぞれが異なる文字値を持つ基本文字と送りなし文字とで構成されます。構成済み文字は、基本文字と送りなし文字の 1 つの組み合わせに 1 つの文字値が対応します。è という文字の場合、e が基本文字で綴り字記号(アクサングラーブ)が送りなし文字です。
関数の既定の動作は、構成済み形式への変換です。構成済み形式が存在しない場合は合成形式への変換を試みます。
MB_PRECOMPOSED と MB_COMPOSITE は同時にセットできません。MB_USEGLYPHCHARS と MB_ERR_INVALID_CHARS は、他のフラグの状態に関係なくセットすることができます。
cchWideChar に 0 以外の値を指定し、関数が成功すると、lpWideCharStr が指すバッファに書き込まれたワイド文字の数が返ります。 cchWideChar に 0 を指定し、関数が成功すると、変換後の文字列を受け取るバッファに必要なサイズ(ワイド文字数)が返ります。 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、GetLastError 関数を使います。GetLastError 関数は、次のいずれかのエラーコードを返します。
lpMultiByteStr と lpWideCharStr は同じにできません。同じにすると、関数が失敗します。GetLastError 関数を呼び出すと、ERROR_INVALID_PARAMETER が返ります。 MB_ERR_INVALID_CHARS をセットした場合、変換元文字列に無効な文字があると、関数が失敗します。無効な文字とは、MB_ERR_INVALID_CHARS をセットしなければ既定の文字に変換される文字で、変換前は既定の文字でないものです。また、文字列の中に先行バイトがあり、DBCS 文字列の有効な後続バイトがない場合、その先行バイトを無効な文字と見なします。MB_ERR_INVALID_CHARS をセットした場合、無効な文字が見つかると、この関数は 0 を返し、GetLastError 関数は ERROR_NO_UNICODE_TRANSLATION を返します。
Windows CE:CodePage パラメータで CP_UTF7 と CP_UTF8 はサポートされません。
Windows NT/2000:Windows NT 3.1 以降 Windows 95/98:Windows 95 以降 ヘッダー:winnls.h 内で宣言 インポートライブラリ:kernel32.lib を使用
WideCharToMultiByte