Поделиться через


Добавление, удаление и замена ресурсов

Приложения должны часто добавлять, удалять или заменять ресурсы в исполняемых файлах. Для выполнения этих задач можно использовать два метода. Во-первых, необходимо изменить файл определения ресурсов, перекомпилировать ресурсы и добавить перекомпилированные ресурсы в исполняемый файл приложения. Второй метод — копирование данных ресурса непосредственно в исполняемый файл приложения.

Например, чтобы локализовать англоязычное приложение для использования в Норвегии, может потребоваться заменить диалоговое окно на английский язык с использованием норвежского. Разработчик создает соответствующее диалоговое окно с помощью редактора диалоговых окон или путем написания шаблона в файле определения ресурсов. Затем разработчик перекомпилирует ресурсы и добавляет новые ресурсы в исполняемый файл приложения.

Однако если соответствующее диалоговое окно существует в двоичной форме, разработчик может скопировать данные непосредственно в локализованный исполняемый файл с помощью следующих функций. Функция BeginUpdateResource создает дескриптор обновления для исполняемого файла, ресурсы которого необходимо изменить. Функция UpdateResource использует этот дескриптор для добавления, удаления или замены ресурса в исполняемом файле. Функция EndUpdateResource закрывает дескриптор.

После создания дескриптора обновления исполняемого файла с помощью BeginUpdateResource приложение может многократно использовать UpdateResource для внесения изменений в данные ресурса. Каждый вызов UpdateResource вносит свой вклад в внутренний список добавлений, удалений и замен, но фактически не записывает данные в исполняемый файл. Непосредственно перед закрытием дескриптора обновления EndUpdateResource записывает накопленные изменения в исполняемый файл.

Иногда приложению приходится копировать ресурсы из другого файла. Обновление ресурсов показывает пример получения данных ресурса и их размера из файла.