Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk memanfaatkan dukungan run-time MFC dan C untuk Unicode, Anda perlu:
Tentukan
_UNICODE.Tentukan simbol
_UNICODEsebelum Anda membangun program Anda.Tentukan titik masuk.
Pada halaman Tingkat Lanjut dari folder Linker di kotak dialog Halaman Properti proyek, setel simbol Titik Masuk ke
wWinMainCRTStartup.Gunakan fungsi dan tipe runtime yang portabel.
Gunakan fungsi run-time C yang tepat untuk penanganan string Unicode. Anda dapat menggunakan
wcskeluarga fungsi, tetapi Anda mungkin lebih suka makro yang sepenuhnya portabel (diaktifkan_TCHARsecara internasional). Semua makro ini diawali dengan_tcs; mereka menggantikan, satu per satu, untukstrkeluarga fungsi. Fungsi-fungsi ini dijelaskan secara rinci di bagian Internasionalisasi dari Referensi Pustaka Run-Time. Untuk informasi selengkapnya, lihat Pemetaan Teks Generik di tchar.h.Gunakan
_TCHARdan jenis data portabel terkait yang dijelaskan dalam Dukungan untuk Unicode.Perlakukan string literal dengan cara yang tepat.
Pengkompilasi Visual C++ menginterpretasikan string harfiah yang dikodekan sebagai:
L"this is a literal string"yang berarti serangkaian karakter Unicode. Anda dapat menggunakan awalan yang sama untuk karakter harfiah.
_TGunakan makro untuk mengodekan string harfiah secara generis, sehingga dikompilasi sebagai string Unicode di bawah Unicode atau sebagai string ANSI (termasuk MBCS) tanpa Unicode. Misalnya, sebagai ganti dari:pWnd->SetWindowText( "Hello" );gunakan:
pWnd->SetWindowText( _T("Hello") );Dengan
_UNICODEdidefinisikan,_Tmenerjemahkan string harfiah ke formulir awalan L; jika tidak,_Tmenerjemahkan string tanpa awalan L.Petunjuk / Saran
Makro
_Tidentik dengan makro_TEXT.Berhati-hatilah saat meneruskan panjang string ke dalam fungsi.
Beberapa fungsi menginginkan jumlah karakter dalam string; yang lain menginginkan jumlah byte. Misalnya, jika
_UNICODEditentukan, panggilan berikut keCArchiveobjek tidak akan berfungsi (stradalahCString):archive.Write( str, str.GetLength( ) ); // invalidDalam aplikasi Unicode, panjangnya memberi Anda jumlah karakter tetapi bukan jumlah byte yang benar, karena setiap karakter memiliki lebar 2 byte. Sebagai gantinya, Anda harus menggunakan:
archive.Write( str, str.GetLength( ) * sizeof( _TCHAR ) ); // validyang menentukan jumlah byte yang benar untuk dituliskan.
Namun, fungsi anggota MFC yang berorientasi karakter, bukan berorientasi byte, bekerja tanpa pengkodan tambahan ini:
pDC->TextOut( str, str.GetLength( ) );CDC::TextOutmengambil sejumlah karakter, bukan sejumlah byte.Gunakan fopen_s, _wfopen_s untuk membuka file Unicode.
Untuk meringkas, MFC dan pustaka run-time menyediakan dukungan berikut untuk pemrograman Unicode:
Kecuali untuk fungsi anggota kelas database, semua fungsi MFC mendukung Unicode, termasuk
CString.CStringjuga menyediakan fungsi konversi Unicode/ANSI.Pustaka run-time menyediakan versi Unicode dari semua fungsi penanganan string. (Pustaka run-time juga menyediakan versi portabel yang cocok untuk Unicode atau untuk MBCS. Ini adalah
_tcsmakro.)tchar.h menyediakan jenis data portabel dan
_Tmakro untuk menerjemahkan string dan karakter harfiah. Untuk informasi selengkapnya, lihat Pemetaan Teks Generik di tchar.h.Pustaka run-time menyediakan versi karakter lebar dari
main. Gunakanwmainuntuk membuat aplikasi Anda sadar Unicode.