<Return[WXYZ]><Top>

WideCharToMultiByte

Declare Function Api_WideCharToMultiByte& Lib "kernel32" Alias "WideCharToMultiByte" (ByVal CodePage&, ByVal dwFlags&, ByVal lpWideCharStr$, ByVal cchWideChar&, ByVal lpMultiByteStr$, ByVal cchMultiByte&, ByVal lpDefaultChar$, ByVal lpUsedDefaultChar&)

Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long

ワイド文字列を新しい文字列にマップする。新しい文字列がマルチバイト文字セットから構成されるとは限らない。

パラメータ
CodePage
    変換に使うコードページを指定する。

    システムにインストールされているコードページまたはシステムで利用できるコードページの値を指定することができる。

    または、次のいずれかの定数を指定する。

    定数                          

意味                                              

    CP_ACP

ANSI コードページ

    CP_MACCP

Macintosh コードページ

    CP_OEMCP

OEM コードページ

    CP_SYMBOL

シンボルコードページ(42)

    CP_THREAD_ACP

現在のスレッドの ANSI コードページ

    CP_UTF7 

UTF-7 を使った変換

    CP_UTF8

UTF-8 を使った変換

dwFlags
    マップされない文字の処理方法を指定する一連のビットフラグをセットする。

    フラグを何もセットしないと、関数の処理速度が向上する。次のフラグ定数が定義されている。

    定数                                     

意味                                                                                                                              

    WC_NO_BEST_FIT_CHARS

 

 

 

対応するマルチバイトに直接変換されない Unicode 文字を、既定の文字に変換する(lpDefaultChar

パラメータを参照)。つまり、変換した場合、Unicode 文字列に逆変換しても元の文字列と正確に一

致する文字列に戻すことができない文字は、既定の文字に置き換える。
このフラグは単独で使うことも、他の dwFlags オプションと組み合わせて使うこともできる。

    WC_COMPOSITECHECK 

合成文字を構成済み文字に変換する。

    WC_DISCARDNS

変換時、送りなし文字を破棄する。

    WC_SEPCHARS

変換時、別々の文字を生成する。これは、既定の変換動作である。

    WC_DEFAULTCHAR

変換時、例外を既定の文字に置き換える。

    WC_COMPOSITECHECK

 

 

 

フラグをセットすると、合成文字が構成済み文字に変換される。合成文字は、それぞれ異なる文字値を

持つ基本文字と送りなし文字で構成される。構成済み文字は、基本文字と送りなし文字の 1 つの組み

合わせに 1 つの文字値が対応しする。e という文字の場合、e が基本文字で綴り字記号(アクサングラ

ーブ)が送りなし文字である。

    WC_COMPOSITECHECK

 

 

 

 

フラグをセットすると、リストの最後にある 3 つのフラグ(WC_DISCARDNS、WC_SEPCHARS、   

WC_DEFAULTCHAR)を使って構成済み文字への変換をカスタマイズできる。これら 3 つのフラグは、

ワイド文字列に含まれる基本/送りなし文字の組み合わせに対応する構成済み文字が存在しない場合の

関数の動作を決定する。これら 3 つのフラグは、   WC_COMPOSITECHECK フラグをセットした場合に

のみ使える。

    関数の既定の動作は、対応する構成済み文字が存在しない合成文字を別々の文字に変換することである(WC_SEPCHARS)。
lpWideCharStr
    変換するワイド文字列へのポインタを指定する。
cchWideChar
    lpWideCharStr が指す文字列を構成する Unicode(16 ビット)文字の数を指定する。

    -1 を指定すると、文字列が NULL で終わっていると見なされ、長さが自動的に計算される。
lpMultiByteStr
    変換した文字列を受け取るバッファへのポインタを指定する。
cchMultiByte
    lpMultiByteStr が指すバッファのサイズをバイト単位で指定する。

    0 を指定すると、バッファに必要なバイト数が返る(その場合、lpMultiByteStr が指すバッファは使われない)。
lpDefaultChar
    指定したコードページで変換対象のワイド文字を表現できない場合に使う文字へのポインタを指定する。

    NULL を指定すると、システム既定値が使われる。

    lpDefaultChar と lpUsedDefaultChar の両方に NULL を指定すると、関数の処理速度が向上する。
lpUsedDefaultChar
    既定文字が使われたかどうかを示すフラグへのポインタを指定する。

    指定したコードページで表現できないワイド文字が変換対象文字列に 1 つ以上含まれていた場合、TRUE に設定される。それ以外の場合

    は FALSE に設定される。このパラメータには NULL を指定できる。lpDefaultChar と lpUsedDefaultChar の両方に NULL を指定する

    と、関数の処理速度が向上する。
 

戻り値
    cchMultiByte に 0 以外を指定して関数が成功すると、lpMultiByteStr が指すバッファに書き込まれたバイト数が返る。
    cchMultiByte に 0 を指定して関数が成功すると、変換後の文字列を受け取るために必要なバッファのサイズ(バイト数)が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。GetLastError 関数は、次のいずれかのエラ

    ーコードを返す。
    ERROR_INSUFFICIENT_BUFFER
    ERROR_INVALID_FLAGS
    ERROR_INVALID_PARAMETER