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

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

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


В результате стало ясно - помимо простой библиотеки для работы тем нужен сервис Themes, который просто не будет работать в Windows 9x/ME, и все попытки прямого переноса будут заканчиваться в лучшем случае неудачей, а в худшем - крахом системы.

Если ты встретишься с такой же проблемой, то запусти оснастку сервисов и дважды щелкни по пункту Themes. В появившемся окне, в поле Startup type (Тип запуска) установи "Automatic" (Авто).

<Как работает 6 версия>

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

Манифест создается в XML формате и должен иметь соответствующее расширение - "manifest". Например, MyApp.manifest. Первая секция XML файла assemblyIdentity содержит следующие атрибуты:

version - версия манифеста;

processorArchitecture - процессор, для которого разрабатывалось приложение. Например, x86. Если твоя программа заточена под 64-разрядную архитектуру, ты должен указать IA64;

name - название компании, продукта и приложения;

type - разновидность программы. Например, win32.

Помимо этого, в манифесте может быть описание программного продукта (секция description) и его зависимости (dependency) со следующими полями:

type - тип зависимых компонентов. Например, win32;

name - название соответствующего набора;

version - версия компонентов;

processorArchitecture - архитектура процессора, для которого они создавались;

publicKeyToken - ключевой символ;

language - язык.

Манифест можно положить в один каталог с исполняемым файлом или встроить в ресурсы программы. Некоторые умельцы засовывают его в один DLL файл и потом юзают оттуда всеми своими утилитами.

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

(Прим. ред.: в "ШароWarez" этого номера описывается простенькая софтинка, способная подружить любую прогу с визуальными темами Windows XP.)

<Внутренности тем Windows XP>

Используя библиотеку ComCtl32.dll, ты всего лишь получаешь доступ к новым возможностям и делаешь кнопки овальными. Эта библиотека никоим образом не отвечает за внешний вид программы, поэтому теперь мы переходим непосредственно к нашим баранам. Честно говоря, когда M.J.Ash предложил мне описать внутренности работы тем, я практически ничего об этом не знал. Я - программист, и какие-то основы понимал, но дальше было пусто. Начав писать статью, я наткнулся на некоторые весьма интересные вещи, о которых сейчас тебе и расскажу.

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