Frage

Ich baue eine MFC C ++ Anwendung mit "Use Unicode-Zeichensatz" in Visual Studio ausgewählt. Ich habe UNICODE definiert, mein CStrings 16-Bit sind, ich behandeln Dateinamen mit japanischen Zeichen in ihnen, etc. Aber, wenn ich Unicode-Strings japanische Zeichen in einem CComboBox (mit AddString) enthält, setzen, zeigen, dass sie sich wie ????? .

Ich bin mit Windows XP Professional x64 (in englischer Sprache). Wenn ich Windows-Systemsteuerung Regions- und Sprachoptionen verwenden, Registerkarte Erweitert, und stellen Sie die Sprache für Nicht-Unicode-Programme auf Japanisch, Kombinationsfeld gut aussieht.

Also, ich mag meine Combo-Box rechts schauen, und ich will verstehen, warum die „Sprache für Nicht-Unicode-Programme“ -Einstellung wird das Verhalten meines Unicode-Programms zu ändern. Gibt es etwas, was ich tun sollte Feld Windows-Anwendung ist eine Unicode-Anwendung zu sagen?

Vielen Dank für jede Hilfe!

War es hilfreich?

Lösung

Windows-kennt den Unterschied zwischen Unicode und Nicht-Unicode-Programme, die von den Funktionen, die sie anrufen. Die meisten Windows-API-Funktionen werden in zwei Varianten kommen, ein Ende in A für Nicht-Unicode und einem in W für Unicode endet. Die Include-Dateien, die diese Funktionen definieren, werden die Compiler-Einstellungen verwenden, die eine oder andere automatisch für Sie zu wählen.

Die Zeichen möglicherweise nicht richtig kommen, weil Sie eine Schriftart ausgewählt haben, die sie nicht gehört Ihre Standard-UI-Schriftart sein.

Andere Tipps

Wo bekommen Sie die Saiten aus? Wenn sie hart codiert in Ihrem C-Quellen sind, dann zu der Zeit rufen Sie AddString sie sind (höchstwahrscheinlich) bereits beschädigt.

Nichts hindert man von etwas Unicode-String nehmen „quetschen“ es in einem std :: string, zum Beispiel, und sie beschädigen. Auch wenn die Anwendungen als Unicode zusammengestellt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top