Стильные Окна
Фленов Михаил
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 предложил мне описать внутренности работы тем, я практически ничего об этом не знал. Я - программист, и какие-то основы понимал, но дальше было пусто. Начав писать статью, я наткнулся на некоторые весьма интересные вещи, о которых сейчас тебе и расскажу.