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


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

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

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

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

Иногда, приложение должно копировать ресурсы или найти размеры ресурса. Функция LoadLibrary предоставляет дескриптор модуля исполняемого файла, ресурсы которого копируются, а функция LockResource предоставляет указатель на данные ресурса в заданном модуле. Функция SizeofResource возвращает размер указанного ресурса, в байтах.

 

Назад в оглавление
На главную страницу

Hosted by uCoz