TN057: Localization mfc bileşenleri

Bu notu bazı tasarımlar ve bileşeninizi yerelleştirmek için uygulama veya ole denetimi veya mfc kullanan bir dll olarak kullanabileceğiniz yordamları açıklar.

Genel bakış

Gerçekten ne zaman mfc kullanan bir bileşenin yerelleştirme gidermek için iki konu vardır. Her şeyden önce kendi kaynakları-dizeleri, iletişim kutuları ve senin bileşene özgü diğer kaynakları yerelleştirmeniz gerekir. Ayrıca mfc kullanılarak inşa çoğu bileşenlerini içerir ve mfc tarafından tanımlanan kaynakları bir dizi. Yerelleştirilmiş mfc kaynak de sağlamanız gerekir. Neyse ki, birkaç dilde zaten mfc tarafından sağlanmaktadır.

Ayrıca, bileşeninizi onun hedef ortamında çalıştırmak için hazır olmalıdır (Avrupa veya dbcs etkin ortamı). Çoğunlukla, bu karakterleri yüksek bit kümesiyle doğru tedavi ve çift baytlı karakter dizeleri işleme uygulamanızın bağlıdır. Öyle ki bir tek "dünya çapında" ikili kurulum anda takılı sadece farklı kaynaklarla tüm platformlarda kullanılan olması mümkündür mfc, varsayılan olarak, hem de bu ortamlar için etkin.

Yerelleştirme, bileşenin kaynak

Uygulama veya dll yerelleştirme sadece hedef dili eşleşen kaynaklar kaynaklar yerine içermelidir. Kendi kaynakları için bu oldukça kolaydır: kaynakları kaynak Düzenleyicisi'nde düzenleyin ve uygulamanızı oluşturun. Kod dizeleri ya da yerelleştirmek için kodlanmış c++ kaynak kodunuzun – istediğiniz metni olacaktır doğru yazılmışsa tüm Yerelleştirme kaynaklarını değiştirerek yapılabilir. Aslında, tüm sağlayan bir yerelleştirilmiş sürümü bile inşa Orijinal kod içermeyen şekilde bileşeniniz uygulayabilirsiniz. Bu daha karmaşık, ama buna değer ve mfc için seçilen bir mekanizmadır. exe ya da dll dosyası kaynak Düzenleyicisi'ni yükleme ve kaynakları doğrudan düzenleyerek uygulama yerelleştirmek mümkündür. Bu re-application her zaman bu değişiklikler gerektiriyor ise, mümkün ise, uygulamanın yeni bir sürümünü oluşturmak.

Bu önlemenin bir yolu, bazen bir uydu dll adı verilen ayrı bir dll, tüm kaynaklar bulmaktır. Bu dll sonra dinamik olarak çalışma anında yüklenir ve kaynakları yerine bu dll ile tüm kodunuzu ana modülden itibaren yüklenir. mfc doğrudan bu yaklaşımı destekler. myapp adlı bir uygulama göz önünde bulundurun.EXE; tüm myres adlı DLL'de bulunan kaynakları olabilir.dll. uygulamada bu dll yüklenemiyor ve mfc kaynak konumdan yüklemek neden için aşağıdakileri gerçekleştirmek istiyorsunuz InitInstance's:

CMyApp::InitInstance()
{
/ / bir init kodundaki ilk şey
HINSTANCE hInst = LoadLibrary("myres.dll");
Eğer (hInst! = null)
AfxSetResourceHandle(hInst);

/ / diğer başlatma kodu takip ediyorum
.
.
.
}

O andan itibaren mfc, Uygulamam.exe gelen bu dll yerine gelen kaynakları yükler. dll-mfc uygulamanın örneği belirli bir kaynağa izinde aramaz, tüm kaynakları, ancak mevcut olması gerekir. Bu teknik ole denetimlerin yanı sıra eşit için düzenli DLL'leri geçerlidir. Kur programı myres uygun bir sürümünü kopyalamak.dll kaynak yerel ayarı bağlı olarak kullanıcı istiyorum.

Bir kaynak oluşturmak nispeten kolay sadece dll. Bir dll proje oluşturmak, eklemek için.rc dosya için ve gerekli kaynakları ekleyin. Bu tekniği kullanmak değil, varolan bir proje varsa, bu projeden kaynaklar kopyalayabilirsiniz. Projeye kaynak dosyasını ekledikten sonra neredeyse proje oluşturmaya hazırsınız demektir. Yapmanız gereken tek şey, bağlayıcının /noentryeklemek için seçenekler ayarlanır. Bu bağlayıcı dll hiçbir giriş noktası – olduğunu söyleyen herhangi bir kodu vardır beri hiçbir giriş noktası var.

&Notnbsp;  Kaynak Düzenleyicisi Visual c++ 4.0 ve sonraki başına birden fazla dili destekler.rc dosyası. Bu tek bir projede, yerelleştirme yönetimi çok kolay yapabilirsiniz. Her dil kaynaklarını kaynak Düzenleyicisi tarafından oluşturulan Önişlemci yönergesi tarafından denetlenir.

Sağlanan mfc kullanılarak yerelleştirilmiş kaynakları

Oluşturduğunuz herhangi bir mfc uygulaması iki şey mfc verimlidir: kod ve kaynaklar. Başka bir deyişle, mfc çeşitli hata iletileri, yerleşik iletişim kutuları ve mfc sınıfları tarafından kullanılan diğer kaynakları vardır. Tamamen uygulamanızın yerelleştirmek için sadece uygulama kaynakları, ama aynı zamanda doğrudan mfc gelir kaynakları yerelleştirmeniz gerekir. Hedeflediğiniz dil mfc zaten desteklediği dillerden biri ise, yerelleştirilmiş kaynakları kullanmasını sağlamak yeterlidir mfc farklı dilde çok sayıda kaynak dosyalarını otomatik olarak sağlar.

Mfc destekler bu yazının olarak: Çince, Almanca, İspanyolca, Fransızca, İtalyanca, Japonca ve Korece. Bu yerelleştirilmiş sürümleri içeren MFC\INCLUDE\L.* dosyalarıdır ('l' standları için yerelleştirilmiş) dizinleri. Alman MFC\INCLUDE\L.DEU, örneğin dosyalarıdır. MFC\INCLUDE içinde bulunan dosyaların yerine bu rc dosyalarını kullanmak, uygulamanızın neden için eklemeniz yeterlidir bir /IC:\PROGRAM FILES\DEVSTUDIO\VC\MFC\INCLUDE\L.DEU , rc komut satırına (Bu sadece bir örnek-Visual c++ yüklediğiniz dizinin yanı sıra seçim yerel ayarınızı değiştirmek gerekir).

Yukarıdaki talimatları uygulamanız mfc ile statik bağlantılar çalışmaz. Dinamik (AppWizard varsayılan çünkü) uygulamalarının çoğu bağlantı. Bu senaryoda, sadece dinamik olarak kodudur bağlı-yani kaynakları vardır. Bunun sonucunda, uygulamanızda kaynaklarınızı yerelleştirebilirsiniz ama varsa mfc uygulaması kaynakları hala MFC4x.DLL (veya sonraki bir sürümünü) ya da MFC4xLOC.DLL yüklenecek. Bu iki farklı açılardan yaklaşım olabilir.

Özellik yal&nızca Professional ve Enterprise Edition sürümlerinbsp;  Statik bağlama mfc için yalnızca Visual c++ Professional ve Enterprise Edition sürümleri desteklenir. Daha fazla bilgi için bkz: Visual c++ sürümleri.

Daha karmaşık bir yaklaşım gemi lokalize MFC4xLOC.DLLs birini (örneğin, MFC4xDEU, Almanca, İspanyolca, vb MFC4xESP.DLL) ya da sonraki bir sürümünü ve kullanıcı, uygulamayı yüklediğinde, sistem dizinine uygun MFC4xLOC.DLL yükleyin. Bu hem geliştirici ve son kullanıcı için çok karmaşık olabilir ve bu nedenle önerilmez. Teknik Not 56 bu tekniği ve onun uyarılar hakkında daha fazla bilgi için bkz:.

En basit ve güvenli bir yaklaşım size kullanıyorsanız, yerelleştirilmiş mfc kaynak uygulama veya dll kendisi (ya da kendi uydu dll) eklemektir. Bu MFC4xLOC.DLL doğru yükleme sorunları önler. Ayrıca kaldırmanız gerekir (rc komut satırı düzgün gelin için yerelleştirilmiş kaynakları ayarlama yukarıda) verilen statik durumda aynı yönergeleri izleyin yapmak için hariç /D_AFXDLL tanımlayan AppWizard tarafından eklenmiştir. Ne zaman /D_AFXDLL ise tanımlanmış, afxres.(Onlar mfc DLL'lerden yerine çekti çünkü) h (ve diğer mfc rc dosyalarını) aslında tüm kaynaklar tanımlama yok.

Teknik notlar numarasına göre |nbsp; Teknik notlar kategorisine göre

Index