Наша совместная команда Banwar.org

Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

Працюємо з ресурсами

Рано чи пізно будь-яка людина, що програмує під Windows (мається на увазі платформа Win32), стикається з необхідністю роботи з ресурсами. Коли настане цей момент - в першу чергу, залежить від середовища розробки та бібліотек, якими програміст користується. Деякі орієнтовані на роботу безпосередньо з ресурсами з самого початку, інші ж дозволяють в більшості випадків обійтися і без них. Однак коли виникає необхідність відредагувати якийсь ресурс, як раз останні середовища розробки не можуть похвалитися зручними редакторами. У цій статті, як ви, напевно, вже здогадалися, ми поговоримо про ресурсах. І про те, як з ними можна працювати з максимальним комфортом.


Що таке ресурси

Якщо ви вже досить програмували під Win32, то не можете не знати, що таке ресурси. Однак у початківців програмістів цей термін нерідко викликає питання, тому, думаю, буде не зайвим нагадати (або пояснити), що ми маємо на увазі, коли говоримо "ресурс".

Ресурси - це дані, поміщені в спеціально відведену для них область виконуваного файлу. Як відомо, виконувані файли можуть містити не тільки програмний код, а й дані. В ОС такі файли Windows розбиті на секції. Якщо дані знаходяться в секції, відведеної для ресурсів, значить, це ресурси. Чим ресурси відрізняються від будь-яких інших даних усередині EXE-файлу? Власне, тільки тим, що система надає програмісту спеціальні функції для роботи з ними.

Традиційно виділяють різні типи ресурсів. До стандартних відносяться значки (іконки), курсори для миші, bitmap-картинки, рядки і таблиці рядків, комбінації "гарячих" клавіш (accelerators), меню, діалогові вікна та інформація про версії додатка. Існує також спеціальний тип ресурсів під назвою RCDATA, що дозволяє додати в програму будь-які дані, що не підходять під наведену вище класифікацію, і працювати з ними теж як зі звичайними ресурсами.


Для чого вони потрібні

"Класичне" програмування під Win32, давно стало анахронізмом, передбачає такий підхід до створення додатків, при якому ресурси використовуються більш ніж інтенсивно. Однак в більшості середовищ розробки, з якими поставляються фірмові бібліотеки для створення призначеного для користувача інтерфейсу, ресурси задіяні не зовсім так, як пропонували творці операційної системи. Наприклад, в Borland Delphi і C ++ Builder всі форми (вікна) і все, що на них, включаючи меню і таблиці "гарячих" клавіш, знаходяться в секції RCDATA у вигляді спеціального текстового опису форми.

Власне, в зв'язку з цим може виникнути один досить здоровий питання: а в чому взагалі сенс використання ресурсів? Адже можна чудово створити меню і діалогові вікна прямо по ходу роботи програми, за допомогою стандартних функцій Win32 API. Навіщо ж ускладнювати все, створюючи спочатку ресурси, а вже після викликаючи їх з програми? Відповідь досить проста. Винесення всіх описаних вище видів ресурсів в окрему частину виконуваного файлу полегшує завдання щодо їх зміни в уже компільованою програмі. Погодьтеся, змінити вміст ресурсу за допомогою спеціального редактора набагато легше, ніж її аналізувати код і змінювати асемблерний код. Однак тут же виникає ще одне питання, теж цілком логічний. Навіщо може знадобитися зміна ресурсів? Найпростіший приклад - локалізація програми. Для перекладу інтерфейсу програми на іншу мову досить скористатися редактором ресурсів, причому зробити це може навіть людина, досить далекий від програмування. А користувачі люблять локалізовані програми ...


інструментарій

Для роботи з ресурсами, природно, потрібен спеціальний інструментарій. Його можна розділити на кілька видів: WYSIWYG1-редактори ресурсів, компілятори ресурсів і редактори ресурсів, які працюють з виконуваними файлами.

До того, як ресурс потрапить в виконуваний файл , Він може перебувати в двох станах: у вигляді скрипта або у вигляді скомпільованого файлу ресурсів. Файли зі скриптами - текстові файли з розширенням RC, що мають всередині себе текст на мові Resource Script. Компілятори ресурсів перетворять скрипти в двійковий формат, з яким вміють працювати компоновщики виконуваних файлів. Компілятор ресурсів є практично в кожному пакеті для програмування. Наприклад, в GNU Compiler Collection для Windows цей компілятор називається Windres.exe.

З WYSIWYG-редакторами працювати, звичайно ж, на порядок простіше, ніж писати скрипти в блокноті. Картинки в них малювати, природно, не так зручно, як в Adobe Photoshop, але в плані редагування меню, діалогів, та й іконок з курсором все не так вже й погано. У них ресурси можна редагувати, як правило, і у вигляді скриптів, і в скомпільованому довічним вигляді. Таких програм, на щастя теж чимало. Найбільш добре знайомий програмістам, мабуть, редактор ресурсів з Microsoft Visual Studio. Є також Borland Resource Workshop, якому сто років в обід, а в останніх версіях середовищ розробки від Borland його вже не видно і не чутно.

Програми, які вміють працювати з ресурсами в виконуваних файлах, як правило, теж мають деякі зачатки WYSIWYG. Далі за всіх в цьому напрямі просунувся Resource Hacker, а й інші теж не так вже й погані.


Resource Builder від SiComponents

А зараз я хотів би розповісти про програму, яка в наведеній класифікації потрапляє відразу в усі три категорії і має як WYSIWYG-дизайнер, так і компілятор ресурсів. Вміє при цьому працювати і зі скриптами, і з двійковими файлами ресурсів, і з виконуваними файлами. Назва програми, як ви вже здогадалися, - ResourceBuilder, а знайти в інтернеті її можна за адресою www.resource-builder.com або www.sicomponents.com . Програма, правда, платна, але це, мабуть, той самий випадок, коли продукт дійсно заслуговує сотні "вічнозелених", яку за нього просять розробники.

Після скачування пробної версії і її установки ви зможете запустити програму і побачити приблизно те ж саме, що містить скріншот до статті. В цілому, на мою скромну думку, інтерфейс досить зручний і симпатичний.

Розробники Resource Builder'а стверджують, що це єдиний WYSIWYG-редактор ресурсів, що підтримує Unicode-ресурси, в тому числі і RC-скрипти в цьому кодуванні. Крім того, програма підтримує і 16-бітові, і 32-бітові скомпільовані файли ресурсів, аналогічно і виконувані файли. Також є підтримка зміни ресурсів без перекомпіляції виконуваного файлу, яка, по суті, є стандартною і реалізована в багатьох програмах, проте це ніяк не применшує корисності даної функції. Що цікаво, Resource Builder вміє працювати і з ресурсами компонентів Delphi / C ++ Builder.

Графічний редактор, вбудований в Resource Builder, за своїми можливостями просто-таки близнюк Paint'а. У той же час, на відміну від багатьох інших редакторів, він підтримує редагування зображень будь-якого розміру і з будь-якою глибиною кольору. У довідці написано, що програма вміє працювати не тільки зі стандартними BMP-картинками, а й із зображеннями у форматі JPEG. Однак з такими ресурсами не можна буде працювати тими ж системними засобами, що і з BMP, тому особисто мені ця можливість не здається такою вже корисною.

Зате цікава особливість Resource Builder'а - підтримка роботи з формами Delphi і C ++ Builder. З ними можна працювати в текстовому вигляді, причому редактор має підсвічування синтаксису для них. А якщо у вас на комп'ютері встановлено Delphi 6 або 7, або ж C ++ Builder 6, то можна скористатися їх засобами для візуального редагування форм. Якщо при цьому вказати всі додаткові компонентні бібліотеки (BPL), то робота з формами буде зовсім комфортною.

З редагуванням стандартних діалогових ресурсів теж ніяких проблем немає. Resource Builder підтримує як стандартні елементи, що надаються Windows, так і дозволяє здійснити підключення сторонніх бібліотек з елементами управління. Причому одна така бібліотека поставляється разом з самим Resource Builder'ом. Вона, правда, невелика і містить всього дві кнопки, але зате забезпечена вихідними текстами, так що кожен бажаючий зможе створити на її основі свою бібліотеку елементів управління.

Разом з Resource Builder поставляється і консольний компілятор ресурсних скриптів, тому ті, хто хоче компілювати ресурси з командного рядка, також матимуть можливість це зробити. мовні можливості компілятора повністю збігаються з можливостями візуального редактора ресурсів, так що все ресурсні скрипти, створені за допомогою Resource Builder'а, повністю з ним сумісні.

Ресурси в програмі можна помістити в спеціальну ресурсну DLL-бібліотеку, причому для того, щоб зробити це, не потрібно ніяких сторонніх інструментів. Одним рухом руки в програму або в ресурсний файл можна додати XP Manifest (спеціальний ресурс, що забезпечує підтримку візуальних стилів Windows XP). Для зручності користувача в Resource Builder'е є підтримка багатомовного інтерфейсу, причому російська мова включений в дистрибутив пробної версії програми. Також варто відзначити присутність "Майстра налаштувань", який можна в будь-який момент викликати з меню "Інструменти". З його допомогою можна швидко налаштувати найважливіше, не вникаючи в деталі всіх налаштувань, яких в Resource Builder'е не так вже й мало.

Таким чином, в якості підведення підсумків хочу сказати, що Resource Builder - найякісніший з зустрінутих мною інструментів для роботи з ресурсами. У цьому він може дати фору навіть такому монстру, як Visual Studio. А вже про такі програми, як Borland Resource Workshop або Borland Image Editor, і говорити нема чого. Тому рекомендую його всім, хто страждає від недоліків того редактора ресурсів, яким користується.

Вадим СТАНКЕВИЧ


1 WYSIWYG - What You See Is What You Get, тобто в редакторі все виглядає так само, як буде виглядати при роботі програми

Чим ресурси відрізняються від будь-яких інших даних усередині EXE-файлу?
Власне, в зв'язку з цим може виникнути один досить здоровий питання: а в чому взагалі сенс використання ресурсів?
Навіщо ж ускладнювати все, створюючи спочатку ресурси, а вже після викликаючи їх з програми?
Навіщо може знадобитися зміна ресурсів?

Новости

Banwar.org
Наша совместная команда Banwar.org. Сайт казино "Пари Матч" теперь доступен для всех желающих, жаждущих волнения и азартных приключений.

Фольгированные шары с гелием
Для начала давайте разберемся и чего же выполнен фольгированный шар и почему он летает дольше?! Как вы помните, наши латексные шарики достаточно пористые, поэтому их приходится обрабатывать специальным