2012-03-29 5 views
0

Ich habe ein vorhandenes MFC-Produkt und plane die Unterstützung einiger anderer Landessprachen durch die Verwendung von Nur-Ressourcen-DLLs. Ich habe eine Reihe von Artikeln und Tutorials darüber gelesen, wie ich das anstellen soll, aber gebe zu, dass ich nicht viel gründliche Kenntnisse über Windows-Ressourcen habe (meistens benutze einfach die grafische Benutzeroberfläche von VS 2008).Mehrere DLL-Ressourcen-Management

Der Hauptbereich, den ich versuche zu verstehen, ist, dass es scheint, dass alle Ressourcenquelldateien (dh resource.rc) für diese DLLs - und das Hauptprogramm - die gleiche Kopie der Ressource teilen sollten .h. Schließlich müssen alle diese IDD_xxx-Werte konsistent sein, und es scheint, als würde das Aktualisieren von Ressourcen noch komplizierter werden, wenn mehrere resource.h-Dateien synchron gehalten werden müssen!

Also bin ich richtig, und hat jemand irgendwelche Tipps, wie Sie das am besten umsetzen? Sollte ich resource.rc in den DLL-Projekten ändern, um auf die "Master" resource.h im Hauptprogrammverzeichnis zu zeigen?

Antwort

0

Ja, verwenden Sie die gleiche resource.h Datei sicher.

Ein Weg ist, nur die Ressourcen zu kopieren, die Sie in das neue Ressource-Projekt übersetzt werden müssen - Zeug wie Menüs, Strings, Dialoge. Bitmaps und Symbole müssen wahrscheinlich nicht übersetzt werden, es sei denn, Sie fügen Text ein, der sprachspezifisch ist. Wenn Sie Ihren lokalen Namen kennen, können Sie AfxSetResourceHandle() beim Programmstart mit der manuell geladenen Ressourcen-DLL aufrufen.

Eine andere Möglichkeit, das Problem anzugehen, wenn Sie eine Vielzahl von DLLs und EXEs haben, ist die Verwendung von Tools zur Bearbeitung binärer Ressourcen. Sie erstellen Token-Dateien aus Ihren Ressourcen. Ihre Übersetzer bearbeiten die Token-Datei mit dem Binär-Bearbeitungstool. Wenn alles fertig ist, führen Sie ein Tool aus, um die Übersetzung auf die Binärdateien anzuwenden. Im Grunde verteilen Sie keine Ressourcen-DLLs, sondern verteilen verschiedene Versionen Ihrer DLLs für jede Sprache. Die Werkzeuge sind schlau genug, dass, wenn Sie eine Änderung vornehmen, wie zum Beispiel eine Zeichenkette oder einen Dialog hinzufügen, sie abgeholt werden und Ihr Übersetzer sieht, dass er etwas Neues übersetzen muss. Die zuvor übersetzte Arbeit wird in den Token-Dateien gespeichert. So machen wir es in meinem Geschäft. Früher verwendeten wir das Localization Resource-Toolkit von Microsoft. Ich weiß nicht, ob wir es noch benutzen oder nicht, da es jetzt jemand anderes ist.

0

Ich fand die MSDN Artikel ID 198846 einen guten Ausgangspunkt für die gemeinsame Nutzung von Ressourcen über eine DLL, obwohl es für neuere Versionen von Visual Studio aktualisiert werden muss, war es ziemlich einfach zu folgen und zu verstehen.

http://support.microsoft.com/kb/198846