Самоучитель по Delphi 7 для профессионалов


Theme API



Помимо описанного способа создания и управления визуальными стилями разработчик может использовать функции Theme API, разработанные Microsoft для этих целей.

Для того чтобы использовать Theme API, можно стандартным способом подключить к проекту динамическую библиотеку Theme.dll:

var ThemeDLL: HINST;

...

begin

ThemeDLL := LoadLibrary('theme.dll');

 if ThemeDLL <> 0 then

 begin

...

end;

 end;

Затем можно использовать возможности этого программного интерфейса напрямую. С деталями его реализации вы можете ознакомиться в документации Microsoft MSDN.

Однако можно поступить проще. В составе Delphi 7 имеется модуль Ux-Theme.pas, в котором как раз и реализованы возможности Theme API. Кроме этого, модуль Themes.pas содержит классы для основных элементов управления, которые могут использоваться при создании визуальных стилей, а также класс менеджера тем TThemeServices.

Так как детальное обсуждение возможностей Theme API выходит за рамки этой книги, в листинге 6.4 представлен схематичный пример использования функций этого программного интерфейса. Кроме того, как и все остальные API, работающие с GUI (Graphic User Interface) операционной системы, реальный код с использованием Theme API всегда перегружен многочисленными и ужасными на вид (а на самом деле вполне безобидными) функциями, рассчитывающими области вывода, неклиентские зоны оконных элементов и т. д.

Поэтому наш пример лишь показывает, как загрузить динамическую библиотеку theme.dll и получить ссылку на тему визуального стиля для текущего окна и кнопочного элемента управления.

 Листинг 6.4. Пример использования функций Theme API в Delphi 

var DC: HOC;

CurrentThemeData: HTHEME;

begin

if UseThemes and InitThemeLibrary then 

try

DC := GetWindowDC(Handle) ;

 try CurrentThemeData := OpenThemeData(0, 'button');

CloseThemeData(CurrentThemeData); 

finally

ReleaseDC(Handle, DC); 

end finally

FreeThemeLibrary; 

end else

ShowMessage('Приложение или операционная система не поддерживают использование Theme API');


Начало  Назад  Вперед



Книжный магазин