Aktivierung der Internationalen Programmierung
Die meisten herkömmlichen C- und C++-Code machen Annahmen zu Zeichen- und Zeichenfolgenmanipulation, die für internationale Anwendungen nicht gut funktionieren. Obwohl sowohl MFC als auch die Laufzeitbibliothek Unicode oder MBCS unterstützen, gibt es weiterhin Arbeit für Sie. In diesem Abschnitt wird die Bedeutung der "internationalen Aktivierung" in Visual C++ erläutert:
Unicode und MBCS werden über tragbare Datentypen in MFC-Funktionsparameterlisten und Rückgabetypen aktiviert. Diese Typen werden abhängig davon, ob ihr Build das Symbol
_UNICODE
oder das Symbol_MBCS
(d. h. DBCS) definiert, bedingt definiert. Unterschiedliche Varianten der MFC-Bibliotheken werden automatisch mit Ihrer Anwendung verknüpft, je nachdem, welche dieser beiden Symbole ihr Build definiert.Klassenbibliothekscode verwendet tragbare Laufzeitfunktionen und andere Mittel, um das richtige Unicode- oder MBCS-Verhalten sicherzustellen.
Sie müssen dennoch bestimmte Arten von Internationalisierungsaufgaben in Ihrem Code behandeln:
Verwenden Sie die gleichen tragbaren Laufzeitfunktionen, die MFC unter beiden Umgebungen portierbar machen.
Verwenden Sie das
_T
Makro, um Literalzeichenfolgen und Zeichen unter beiden Umgebungen portierbar zu machen. Weitere Informationen finden Sie unter Generic-Text Mappings in tchar.h.Ergreifen Sie Vorsichtsmaßnahmen beim Analysieren von Zeichenfolgen unter MBCS. Diese Vorsichtsmaßnahmen sind unter Unicode nicht erforderlich. Weitere Informationen finden Sie unter MBCS Programming Tipps.
Achten Sie darauf, ob Sie ANSI-Zeichen (8-Bit) und Unicode-Zeichen (16-Bit) in Ihrer Anwendung kombinieren. Es ist möglich, ANSI-Zeichen in einigen Teilen Ihres Programms und Unicode-Zeichens in anderen zu verwenden, aber Sie können sie nicht in derselben Zeichenfolge mischen.
Verwenden Sie keine hartcodierten Zeichenfolgen in Ihrer Anwendung. Erstellen Sie stattdessen STRINGTABLE-Ressourcen, indem Sie sie der RC-Datei der Anwendung hinzufügen. Ihre Anwendung kann dann lokalisiert werden, ohne Dass Quellcodeänderungen erforderlich sind oder neu kompiliert werden müssen. Weitere Informationen zu STRINGTABLE-Ressourcen finden Sie im Zeichenfolgen-Editor.
Hinweis
Europäische und MBCS-Zeichensätze enthalten einige Zeichen, z. B. Akzentbuchstaben, mit Zeichencodes, die größer als 0x80 sind. Da in den meisten Code signierte Zeichen verwendet werden, werden diese Zeichen größer als 0x80 bei der Konvertierung int
in . Dies ist ein Problem bei der Arrayindizierung, da die zeichenweiten Zeichen negativ, Indizes außerhalb des Arrays sind. Sprachen, die MBCS verwenden, z. B. Japanisch, sind ebenfalls einzigartig. Da ein Zeichen möglicherweise aus 1 oder 2 Bytes besteht, sollten Sie beide Bytes immer gleichzeitig bearbeiten.