Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #50, ЯНВАРЬ 2005 г.

Real audio is not skinnable?

Woz3qK (woz3qk@mail.ru)

Спецвыпуск: Хакер, номер #050, стр. 050-074-1


CQ 7144714

Создаем поддержку скинов для своей программы

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

Сегодня более половины населения планеты - пользователи компьютера. С каждым годом технологии становятся все более совершенными, оборудование все более мощным, что открывает перед программистами новые возможности. Пользователи стали довольно разборчивыми и требовательными к дизайну программного продукта. Юзерам нравятся красивые трехмерные кнопочки, рисуночки, блестящие менюшечки. Им быстро надоедает интерфейс - хочется новенького, чтобы глаз радовало. Чтобы удержаться на плаву, необходимо держать нос по ветру. Поскольку про композицию и дизайнерские аспекты программных интерфейсов Хоррифик уже написал для этого номера, расскажу про то, как именно программировать скинованные программы.

Что это такое?

Скин (англ. - ‘шкура’) - визуальная оболочка, которая используется для того, чтобы придавать разные внешние виды программе. Да что тут рассказывать - всем известны Winamp, Windows (проги для смены внешнего вида типа Talisman Desktop, Aston, DesktopX, StyleXP). Кроме того, в сети проходят конкурсы и олимпиады по созданию скинов к различным программам, так что на этом можно и заработать.

С чего начать?

Для начала четко определим цель (средство у нас уже есть - это Delphi). Допустим, у нас есть программа, и нам известно, что в ней присутствуют три кнопки, два лэйбла и фоновая картинка. Когда программа загружается, еще не известны размер окна и расположение кнопок, картинки и Edit’ов, так как в разных скинах местоположение может меняться. Значит, нам надо хранить эти данные.

Хранить различные ресурсы (картинки и прочее) в исполняемых файлах мы не будем, так как данный тип скинов изменять невозможно (соответственно и добавлять новые скины) без перекомпиляции программы (на самом деле все возможно, пример тому - программы вроде Resource Hacker'а - прим. AvaLANche'а). Нам нужно сделать поддержку скинов таким образом, чтобы можно было легко добавлять шкуры, чтобы пользователь мог сам создать скин, который ему нравится. Хранить файлы можно разными методами. Серьезные программы используют либо свой собственный формат хранения данных, либо используют файлы, которые содержат в себе ресурсы (DLL). Также можно использовать файлы с нулевой компрессией (что встречается крайне часто - прим. Dr.). Есть программы, которые содержат один конфигурационный файл и еще один - со всеми картинками программы. Сразу стоит отметить, что эта статья является вводной и что для ознакомления мы рассмотрим самый простой способ хранения данных, а именно - будем сохранять файлы шкуры в каталоге. В этом же каталоге будет находиться конфигурационный файл и картинки. Конфигурационный файл будет называться skin.ini. Можно, конечно использовать не INI-файлы, а свои, находить нестандартные методы, писать обработку всех строк вручную, но мы этот подход отбросим, так как он для "школьной олимпиады по информатике для 8 класса" ;) (да, именно так я охарактеризовал это извращение - прим. Dr.). На листинге приведен пример такого файла.

Содержание  Вперед на стр. 050-074-2