Стильные Окна

Фленов Михаил

Xakep, номер #057, стр. 057-032-3


Темы хранятся в папке "Диск:\WINDOWS\Resources\Themes". На первый взгляд папка выглядит так же, как и в старом Windows 9x. Все те же бесполезные файлы с расширением theme.

Файлы, необходимые для стандартной темы XP, находятся в подкаталоге Luna. Давай-ка на них посмотрим. Опаньки, а это что за чудо в перьях - luna.msstyles? Что-то я такого расширения в старом Windows не видел. Сразу захотелось взглянуть на содержимое этого файла. Я нажал на F3 в TotalCommander'е. Первые два байта имеют значение "MZ". Это говорит о том, что файл, скорее всего, содержит байт-код.

Опускаю глаза чуть ниже и вижу заветную надпись: "This program cannot be run in DOS mode". Значит, luna.msstyles не просто содержит байт-код, но и может выполняться. По крайней мере, имеет соответствующую структуру. Ты уже должен знать о том, что любой исполняемый файл или DLL'ка иногда содержат ресурсы. Я понадеялся на то, что здесь они есть, и открыл файл в просмотрщике ресурсов ResBuild (его можно взять по адресу www.tgtsoft.com).

Я не ошибся, в luna.msstyles действительно оказалось множество ресурсов! Обрати внимание на структуру файла. Судя по заголовкам, это как раз то, что мы искали. Открой ветку bitmaps. На скриншоте я показал один из ее пунктов. Там лежат картинки, которые используются для отображения стандартного элемента CheckBox.

<Редактор к бою>

Для редактирования ресурсов я пока не нашел ничего удобнее программы Restorator (www.bome.com/Restorator), поэтому создание новой темы будем осуществлять с привлечением именно этого приложения.

Итак, запускаем Restorastor и открываем в нем файл luna.msstyles. Для примера я буду издеваться над элементом управления CheckBox. В разделе Bitmap нам понадобятся файлы BLUE_CHECKBOX13.bmp, BLUE_CHECKBOX16.bmp, BLUE_CHECKBOX25.bmp. Это набор изображений данного компонента разных вариантов размера.

Правой кнопкой мыши щелкай по пункту BLUE_CHECKBOX13.bmp и выбирай в появившемся меню "Extract as BLUE_CHECKBOX13.bmp". Найди этот файл (проверь список в правом нижнем углу программы) и отредактируй в любом графическом редакторе. Так как мы просто ставим эксперимент - особо с этим делом не мучайся. На скриншоте видно, что я всего-навсего перечеркнул вертикальной линией оригинальное изображение. Для загрузки отредактированного результата снова щелкни правой кнопкой по этому же пункту и выбери "Assign to BLUE_CHECKBOX13.bmp". Повтори то же самое с остальными рисунками (BLUE_CHECKBOX16.bmp, BLUE_CHECKBOX25.bmp).

Как только закончишь редактирование, сохрани файл под новым именем и скопируй в папку "Диск:\WINDOWS\Resources\Themes". Хочешь посмотреть отредактированную тему в действии? Тогда просто запусти ее файл на выполнение (как обычный экзешник - двойным кликом :)).

<Итого>

На рисунке 7 я показал тебе окно свойств программы Total Commander. В этом окне очень много компонентов CheckBox, и если не подведет печать журнала, ты сможешь увидеть, что все компоненты перечеркнуты синей полосой.

Назад на стр. 057-032-2  Содержание  Вперед на стр. 057-032-4