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ımlayın
_UNICODE.Programınızı oluşturmadan önce simgeyi
_UNICODEtanı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
wcskullanabilirsiniz, ancak tam taşınabilir (uluslararası etkinleştirilmiş)_TCHARmakroları tercih edebilirsiniz. Bu makroların tümü ön ekindedir_tcs; işlev ailesi içinstrbir 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
_Tkullanarak 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ı
_UNICODEolarak,_Tdeğişmez dizeyi L ön ekli forma ç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, tanımlanırsa
_UNICODE, birCArchivenesneye yapılan aşağıdaki çağrı çalışmaz (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, 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.
CStringCStringayrı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
mainbir sürümünü sağlar. Uygulamanızı Unicode'a duyarlı hale getirmek için kullanınwmain.