0

を使用して通常の ASCII 文字列を画面に出力するプログラムがありますTextOut()。Shift-JIS でエンコードされた文字列を出力する機能を追加したいと考えています。TextOut()Shift-JIS 文字列を印刷したいのか、それとも別の関数を使用する必要があるのか​​ をどうにかして伝えることができますか? TextOut のドキュメントには、エンコーディングについては言及されていないようです。

参考:私のプログラムは現在、MS Visual Studio 2015 でコンパイルされており、「文字セット」は「マルチバイト文字セットを使用する」に設定されています。

4

1 に答える 1

1

andlabs のおかげで、ここに完全な答えがあります。これは、「文字セット」を「マルチバイト文字セットを使用」に設定してプログラムをコンパイルした場合に機能します。「文字セット」を unicode に設定してコンパイルしたくはありませんでした。

    char shift_jis_string[MAX_STR_LEN]; // null terminated

    // blah blah, setting shift_jis_string

    WCHAR unicode_string[MAX_STR_LEN];

    int n = MultiByteToWideChar(932,0,shift_jis_string,-1,unicode_string,MAX_STR_LEN);

    TextOutW(hdc,X,Y, unicode_string, n); // note the W on the end
于 2016-04-25T09:57:34.287 に答える