Aracılığıyla paylaş


Unicode Programlama Özeti

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

  • _UNICODE Tanımlayın.

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

  • Giriş noktası belirtin.

    Projenin Özellik Sayfaları iletişim kutusundaki Bağlayıcı klasörünün Çıkış sayfasında, Giriş Noktası simgesini wWinMainCRTStartup olarak değiştirin.

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

    Unicode dize işlemesi için uygun C çalışma zamanı işlevlerini kullanın.wcs işlev ailesini kullanabilirsiniz, ancak tamamen taşınabilir (uluslararası etkin) _tchar makrolarını tercih edebilirsiniz.Bu makroların tümü _tcs önekini alır; str işlev ailesine ilişkin biri diğerinin yerine geçer.Bu işlevler Çalışma Zamanı Kitaplığı Başvurusu öğesinin Uluslararası Duruma Getirme bölümünde ayrıntılı olarak açıklanır.Daha fazla bilgi için, bkz. Tchar.h'ta Genel Metin Eşlemeleri.

    _TCHAR ve Unicode İçin Destek konusunda açıklanan ilişkili taşınabilir veri türlerini kullanın.

  • Harflerden oluşan dizeleri düzgün işle.

    Visual C++ derleyicisi aşağıdaki gibi kodlanan değişmez bir dizeyi yorumlar:

    L"this is a literal string"
    

    Unicode karakter dizesi demek için.Sabit değer karakterleri için aynı öneki kullanabilirsiniz.Unicode altında Unicode dizeleri veya unicode olmadan ANSI dizeleri (MCBS dahil) olarak derlenmeleri için değişmez dizeleri genel olarak kodlamak üzere _t makrosunu kullanın.Örneğin, aşağıdakinin yerine:

    pWnd->SetWindowText( "Hello" );
    

    kullan:

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

    Tanımlanan _UNICODE ile, _T, değişmez dizeyi L önekli biçimde çevirir; aksi takdirde, _T dizeyi L öneki olmadan çevirir.

    İpucuİpucu

    _t makrosu, _TEXT makrosu ile aynıdır.

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

    Bazı işlevler bir dizede karakter sayısını isterken diğerleri bayt sayısını ister.Örneğin, eğer _UNICODE tanımlanırsa, aşağıdaki CArchive nesnesi araması çalışmaz (str bir CString dizesidir):

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

    Bir Unicode uygulamasında her karakter 2 bayt genişliğinde olduğundan uzunluk doğru bayt sayısını değil karakter sayısını verir.Bunun yerine şunu kullanmalısınız:

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

    yazılacak doğru bayt sayısını belirtir.

    Ancak, karakter odaklı yerine bayt odaklı olan MFC üye işlevleri bu ekstra kodlama olmadan çalışır:

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

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

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

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

  • Veritabanı sınıfı üye işlevleri haricinde, CString dahil, tüm MFC işlevleri Unicode etkindir.CString aynı zamanda Unicode/ANSI dönüştürme işlevlerini de sağlar.

  • Çalışma 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 makrolarıdır.)

  • Tchar.h, taşınabilir veri türleri ve çevrilen kalıp deyim dizeleri ve özellikleri için _T makrosu sağlar.Daha fazla bilgi için, bkz. Tchar.h'ta Genel Metin Eşlemeleri.

  • Çalışma zamanı kitaplığı anaöğesinin geniş karakter bir sürümünü sağlar.Uygulamanızı Unicode bilinçli yapmak içinwmain kullanın.

Ayrıca bkz.

Kavramlar

Unicode desteği