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ımla _UNICODE.

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

  • Giriş noktasını belirtin.

    Projenin Özellik Sayfaları iletişim kutusunda yer alan Bağlayıcı klasörünün Gelişmiş sayfasında, Giriş Noktası sembolünü wWinMainCRTStartup olarak ayarlayın.

  • 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ü _tcs önekiyle gelir; her biri str işlev ailesinin yerine bire bir geçer. Bu işlevler, Uluslararasılaştırma bölümünde, Çalışma Zamanı Kitaplığı Başvurusu'nun ayrıntılı olarak açıklanmıştır. Daha fazla bilgi için bkz tchar.h'de Genel Metin Eşlemeleri.

    Unicode ile _TCHAR ve Unicode Desteği'nde açıklanan ilgili taşınabilir veri türlerini kullanın.

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

    Visual C++ derleyicisi şu biçimde yazılmış bir sabit dizeyi yorumlar:

    L"this is a literal string"
    

    bir Unicode karakter dizesi anlamına gelir. Harfi harfine karakterler için aynı ön eki kullanabilirsiniz. Makroyu _T kullanarak değişmez dizeleri evrensel bir şekilde kodlayın. Böylece, Unicode ortamında Unicode dizeleri olarak veya ANSI (çok baytlı karakter kümesi dahil) dizeleri olarak derlenirler. Örneğin, yerine:

    pWnd->SetWindowText( "Hello" );
    

    şunu kullanın:

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

    Tanımlı _UNICODE ile, _T değişmez dizeyi L ön eki ile ç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, _UNICODE tanımlandığında, bir CArchive nesnesine yapılan aşağıdaki çağrı başarılı olmayacaktır (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, bir karakter sayısını 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, CString dahil olmak üzere tüm MFC işlevleri Unicode özelliklidir. 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 bir main sürümünü sağlar. Uygulamanızı Unicode'a duyarlı hale getirmek için kullanın wmain .

Ayrıca bkz.

Unicode Desteği