Podsumowanie programowania Unicode
Aby skorzystać z MFC i c obsługi standardu Unicode, należy:
Definiowanie _UNICODE.
Zdefiniowanie symbolu _UNICODE przed dokonaniem kompilacji programu.
Określ punkt wejścia.
Na danych wyjściowych stronę folderu Program łączący w ramach projektu Stron właściwości okno dialogowe pola, ustaw symbol punktu wejścia wWinMainCRTStartup.
Użyj przenośnych funkcji run-time i typów.
Funkcji właściwego c czasu obsługi ciąg Unicode.Można użyć wcs rodziny funkcji, ale może preferować pełni portable (międzynarodowo włączone) _TCHAR makr.Te makra są poprzedzone z _tcs; one zastąpić, jeden za jeden, dla str rodziny funkcji.Funkcje te są opisane szczegółowo w internacjonalizacji sekcji Run-Time Library Reference.Aby uzyskać więcej informacji, zobacz Mapowań tekst rodzajowy w Tchar.h.
Użyj _TCHAR i pokrewne przenośne typy danych opisane w Obsługa standardu Unicode.
Poprawnie obsługują ciągi tekstowe.
Kompilator Visual C++ interpretuje zakodowane jako literał ciągu:
L"this is a literal string"
oznacza ciąg znaków Unicode.Można użyć samego prefiks w dosłownej postaci znaków.Użyj _T makro ogólnie, kod ciągi tekstowe, więc skompilować one jako ciągi znaków Unicode w Unicode lub jako łańcuchy ANSI (w tym MBCS) bez Unicode.Na przykład zamiast:
pWnd->SetWindowText( "Hello" );
Użyj:
pWnd->SetWindowText( _T("Hello") );
Z _UNICODE zdefiniowane, _T tłumaczy literału do formularza prefiksem L; w przeciwnym razie _T ciąg bez prefiksu l tłumaczy.
Porada _T makro jest taka sama, jak _TEXT makro.
Uważaj, przekazując długości ciągu do funkcji.
Niektóre funkcje ma liczbę znaków w ciągu; inne osoby mają liczbę bajtów.Na przykład jeśli _UNICODE jest zdefiniowany, następujące wywołanie do CArchive obiektu nie będzie działać (str jest CString):
archive.Write( str, str.GetLength( ) ); // invalid
W aplikacji Unicode długość daje liczbę znaków, ale nie poprawną liczbę bajtów, ponieważ każdy znak jest 2 bajtów.Zamiast tego należy użyć:
archive.Write( str, str.GetLength( ) * sizeof( _TCHAR ) ); // valid
Określa która poprawną liczbę bajtów do zapisu.
Jednakże MFC funkcji elementów członkowskich, które są zorientowane na znak zamiast zorientowane na bajt pracować bez to dodatkowe kodowania:
pDC->TextOut( str, str.GetLength( ) );
CDC::TextOutTrwa liczbę znaków, a nie liczba bajtów.
Użyj fopen_s, _wfopen_s do otwierania plików Unicode.
Podsumowując, MFC i run-time library zapewniają następujące obsługa standardu Unicode programowania w systemie Windows 2000:
Z wyjątkiem funkcje składowe klasy bazy danych, wszystkie funkcje MFC są standard Unicode, łącznie z CString.CStringzapewnia także funkcje konwersji Unicode/ANSI.
Biblioteka uruchomieniowa dostaw wersje Unicode wszystkie funkcje obsługi ciągów.(Run-time library dostarcza również odpowiedni przenośny wersje Unicode lub MBCS.Są to _tcs makr.)
TCHAR.h dostaw przenośnych typów danych i _T makro do tłumaczenia ciągi i znaków.Aby uzyskać więcej informacji, zobacz Mapowań tekst rodzajowy w Tchar.h.
Biblioteka uruchomieniowa zawiera wersję szerokich znaków główne.Użyj wmain aby aplikacji obsługujących kodu Unicode.