質問

「Unicode文字セットを使用」を使用してMFC C ++アプリケーションを構築しています。 Visual Studioで選択されています。 UNICODEを定義し、CStringsは16ビットで、日本語文字を含むファイル名などを処理します。しかし、CComboBoxに日本語文字を含むUnicode文字列を追加すると(AddStringを使用)、?????として表示されます。 。

Windows XP Professional x64(英語)を実行しています。 Windowsコントロールパネルの[地域と言語のオプション]、[詳細設定]タブを使用し、非Unicodeプログラムの言語を日本語に設定すると、コンボボックスが正しく表示されます。

だから、コンボボックスが正しく見えるようにし、「非Unicodeプログラムの言語」がなぜ表示されるのかを理解したいと思います。設定は私のUnicodeプログラムの動作を変更しています。私のアプリケーションがUnicodeアプリケーションであることをWindowsに伝えるために他にすべきことはありますか?

ご協力ありがとうございます!

役に立ちましたか?

解決

Windowsは、Unicodeプログラムと非Unicodeプログラムの違いを、呼び出す関数によって認識しています。ほとんどのWindows API関数には、2つのバリアントがあります。1つは非Unicode用のAで終わり、もう1つはUnicode用のWで終わります。これらの関数を定義するインクルードファイルは、コンパイラ設定を使用して、どちらかを自動的に選択します。

文字が含まれていないフォントをデフォルトのUIフォントとして選択したため、文字が適切に表示されない可能性があります。

他のヒント

どこから文字列を取得しますか? Cソースでハードコーディングされている場合、AddStringを呼び出すときに(ほとんどの場合)すでに破損しています。

Unicode文字列「squeeze」の取得を妨げるものは何もありません。たとえば、std :: stringに入れて、損傷を与えます。アプリケーションがUnicodeとしてコンパイルされている場合でも。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top