Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
_UNICODEtanı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ü
wWinMainCRTStartupolarak 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
wcskullanabilirsiniz, ancak tam taşınabilir (uluslararası etkinleştirilmiş)_TCHARmakroları tercih edebilirsiniz. Bu makroların tümü_tcsönekiyle gelir; her biristriş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
_TCHARve 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
_Tkullanarak 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ı
_UNICODEile,_Tdeğişmez dizeyi L ön eki ile çevirir; aksi takdirde,_Tdizeyi L ön eki olmadan çevirir.İpucu
Makro
_T, makroyla_TEXTaynı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,
_UNICODEtanımlandığında, birCArchivenesnesine yapılan aşağıdaki çağrı başarılı olmayacaktır (strbirCString):archive.Write( str, str.GetLength( ) ); // invalidUnicode 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 ) ); // validyazacak 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::TextOutbayt 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,
CStringdahil olmak üzere tüm MFC işlevleri Unicode özelliklidir.CStringayrı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
_tcsmakrolardır.)tchar.h, sabit dizeleri ve
_Tkarakterleri ç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
mainsürümünü sağlar. Uygulamanızı Unicode'a duyarlı hale getirmek için kullanınwmain.