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.

    PoradaPorada

    _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.

Zobacz też

Koncepcje

Obsługa standardu Unicode