Управление несколькими DLL-ресурсами - PullRequest
1 голос
/ 29 марта 2012

У меня есть существующий продукт MFC, и я планирую поддерживать несколько других национальных языков посредством использования DLL-библиотек только для ресурсов.Я прочитал ряд статей и учебных пособий о том, как это сделать, но признаю, что у меня нет глубоких знаний о ресурсах Windows (в основном я использую графический интерфейс VS 2008).

Основная область, которую я пытаюсь понять, заключается в том, что все исходные файлы ресурсов (то есть, resource.rc) для этих библиотек DLL и основной программы должны совместно использовать одну и ту же копию resource.h.В конце концов, все эти значения IDD_xxx должны быть согласованы, и кажется, что обновление ресурсов было бы еще более сложным, если бы нужно было синхронизировать несколько файлов resource.h!

Так что я прав в этомИ есть ли у кого-нибудь советы, как лучше всего это реализовать?Должен ли я изменить resource.rc в проектах DLL так, чтобы он указывал на «master» resource.h в главном каталоге программы?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2012

Я нашел MSDN article ID 198846 хорошей отправной точкой для совместного использования ресурсов через dll, хотя он требует обновления для более новых версий Visual Studio, это было довольно легко понять и понять.

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

0 голосов
/ 30 марта 2012

Да, обязательно используйте тот же файл resource.h.

Один из способов - просто скопировать ресурсы, необходимые для перевода в новый проект ресурсов - такие как меню, строки, диалоги. Растровые изображения и значки, вероятно, не нужно переводить, если на них не нанесен какой-либо текст, который зависит от языка. Если вы знаете свой локальный язык, при запуске программы вы можете вызвать AfxSetResourceHandle () с библиотекой ресурсов, которую вы загружаете вручную.

Другой способ решения этой проблемы, если у вас множество DLL и EXE-файлов, - это использовать инструменты редактирования двоичных ресурсов. Они создают файлы токенов из ваших ресурсов. Ваши переводчики редактируют файл токена с помощью инструмента двоичного редактирования. Когда все готово, вы запускаете инструмент для применения перевода к двоичным файлам. По сути, вы не распространяете библиотеки DLL ресурсов, а распространяете разные версии своих библиотек DLL для каждого языка. Инструменты достаточно умны, так что если вы сделаете изменение, такое как добавление строки или диалога, оно будет подхвачено, и ваш переводчик увидит, что ему нужно перевести что-то новое. Ранее переведенная работа будет сохранена в файлах токенов. Вот как мы это делаем в моем магазине. Мы привыкли использовать Microsoft Localization Resource toolkit. Я не знаю, используем ли мы это по-прежнему или нет, потому что это ответственность кого-то другого.

...