Aracılığıyla paylaş


Unicode Programlama Özeti

Unicode için MFC ve C çalışma zamanı desteğinden yararlanmak için şunları yapmanız gerekir:

  • tanımlayın _UNICODE.

    Programınızı oluşturmadan önce simgeyi _UNICODE tanımlayın.

  • Giriş noktasını belirtin.

    .

  • Taşınabilir çalışma zamanı işlevlerini ve türlerini kullanın.

    Unicode dize işleme için uygun C çalışma zamanı işlevlerini kullanın. İşlev ailesini wcs kullanabilirsiniz, ancak tam taşınabilir (uluslararası etkinleştirilmiş) _TCHAR makroları tercih edebilirsiniz. Bu makroların tümü ön ekindedir _tcs; işlev ailesi için str bir yerine bir tane ekler. Bu işlevler, Çalışma Zamanı Kitaplığı Başvurusu'nun Uluslararasılaştırma bölümünde ayrıntılı olarak açıklanmıştır. Daha fazla bilgi için bkz . tchar.h'de Genel Metin Eşlemeleri.

    Ve Unicode_TCHARaçıklanan ilgili taşınabilir veri türlerini kullanın.

  • Değişmez dizeleri düzgün bir şekilde işleyebilir.

    Visual C++ derleyicisi şu şekilde kodlanmış bir değişmez dizeyi yorumlar:

    L"this is a literal string"
    

    bir Unicode karakter dizesi anlamına gelir. Değişmez karakterler için aynı ön eki kullanabilirsiniz. Makroyu _T kullanarak değişmez dizeleri genel olarak kodlayın; böylece Unicode olmadan Unicode dizeleri olarak veya ANSI dizeleri (MBCS dahil) olarak derleyin. Örneğin, yerine:

    pWnd->SetWindowText( "Hello" );
    

    şunu kullanın:

    pWnd->SetWindowText( _T("Hello") );
    

    tanımlı _UNICODE olarak, _T değişmez dizeyi L ön ekli forma çevirir; aksi takdirde, _T dizeyi L ön eki olmadan çevirir.

    İpucu

    Makro _T , makroyla _TEXT aynıdır.

  • Dize uzunluklarını işlevlere geçirirken dikkatli olun.

    Bazı işlevler bir dizedeki karakter sayısını ister; diğerleri bayt sayısını ister. Örneğin, tanımlanırsa _UNICODE , bir CArchive nesneye yapılan aşağıdaki çağrı çalışmaz (str bir CString):

    archive.Write( str, str.GetLength( ) );    // invalid
    

    Unicode uygulamasında, her karakter 2 bayt genişliğinde olduğundan uzunluk size karakter sayısını verir, ancak doğru bayt sayısını vermez. Bunun yerine şunları kullanmanız gerekir:

    archive.Write( str, str.GetLength( ) * sizeof( _TCHAR ) );    // valid
    

    yazacak doğru bayt sayısını belirtir.

    Ancak, bayt odaklı değil karakter odaklı MFC üye işlevleri bu ek kodlama olmadan çalışır:

    pDC->TextOut( str, str.GetLength( ) );
    

    CDC::TextOut bayt sayısı değil, birkaç karakter alır.

  • Unicode dosyalarını açmak için fopen_s _wfopen_s kullanın.

Özetlemek gerekirse, MFC ve çalışma zamanı kitaplığı Unicode programlama için aşağıdaki desteği sağlar:

  • Veritabanı sınıfı üye işlevleri dışında, tüm MFC işlevleri unicode özelliklidir, dahil.CString CString ayrıca Unicode/ANSI dönüştürme işlevleri sağlar.

  • Çalışma zamanı kitaplığı, tüm dize işleme işlevlerinin Unicode sürümlerini sağlar. (Çalışma zamanı kitaplığı, Unicode veya MBCS için uygun taşınabilir sürümler de sağlar. Bunlar _tcs makrolardır.)

  • tchar.h, sabit dizeleri ve _T karakterleri çevirmek için taşınabilir veri türlerini ve makroyu sağlar. Daha fazla bilgi için bkz . tchar.h'de Genel Metin Eşlemeleri.

  • Çalışma zamanı kitaplığı geniş karakterli mainbir sürümünü sağlar. Uygulamanızı Unicode'a duyarlı hale getirmek için kullanın wmain .

Ayrıca bkz.

Unicode Desteği