Mehrsprachige Ressourcen DLLs
-
Wurde hier ja schonmal diskutiert, aber ich hab noch nen Problem damit...
Also ich möchte meine Stringtables in externe DLLs (pro Sprache eine) auslagern, die Dialoge und Bilder usw. aber in der EXE lassen.
Nun hab ich aber das Problem, dass, wenn ich zu der DLL switche, die Dialoge usw. nicht mehr gefunden werden (ist ja logisch) Mir ist auch klar, dass ich irgendwo wieder zurückswitchen muss, zur EXE-Ressource, aber ich weiß nicht wo, da ich nicht wirklich schlau daraus werde, wo dieses MFC MDI-Programm jetzt welche Ressource ausliest... Kann mir da jemand weiterhelfen? Bitte, bitte...

-
Wie sieht dein DLL -Code aus
-
Halt ne ganz normale leere MFC-Dll:
#include "stdafx.h" #include "german.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif BEGIN_MESSAGE_MAP(CGermanApp, CWinApp) END_MESSAGE_MAP() CGermanApp::CGermanApp() { } CGermanApp theApp;Aber der interessiert doch eigentlich gar nicht

Nur die Zeichenfolgentabelle in der Ressource ist doch von Bedeutung...
-
Lies er dies: http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q198846 und danach jenes: http://msdn.microsoft.com/library/en-us/intl/nls_0xrn.asp
Kurzgesagt: Mach ne MFC-Erweiterungs-DLL und lade die dynamisch, MFC sucht selbstständig alle geladenen Erweiterungs-DLLs nach Ressourcen ab, in umgekehrter Reihenfolge, wie sie geladen wurden.
-
Erstmal Danke! Das klappt schonmal soweit ganz gut, nur wie mache ich das jetzt, dass ich nicht ALLE Ressourcen aus der DLL lade, sondern z.B. das Programm-Icon weiterhin in der EXE drin ist...?
mfg,
Bloops
-
Dann gibst du den entsprechenden Ressourcen die Sprache "Neutral" und stellst für die Ressourcen deiner Hauptanwendung AFX_RESOURCE_DLL und AFX_TARG_NEU ein (so wie in der Beschreibung für die "echten" Sprachen in den DLLs angegeben)
-
Juhu, klappt bestens. DAANKEE!!
