Windows XP Themes: как узнать шрифт и цвет для часов в tray
От: YaMironov  
Дата: 11.06.03 18:26
Оценка:
Приветствую!

Необходимо узнать для текущей темы XP: какой шрифт и цвет используется в tray clock.

Чуточку подробностей на примере стандартной темы:

В ресурсах файла %SYSTEMROOT%\Resources\Themes\Luna\luna.msstyles зашиты настройки тем,
например: RES:\\TEXTFILE\NORMALBLUE.INI есть настройки default'ной темы.
Так вот, следущий фрагмент этого файла описывает искомую информацию:

[TrayNotify::Clock]
Font = Tahoma, 8
TextColor = 255 255 255

Естественно, шрифт и цвет получаем не из ресурсов, а программно.
Вот где появляются камни ...

Окно trayclock находим так:
Cначала FindWindow("Shell_TrayWnd", NULL)
Затем у "Shell_TrayWnd" ищем child "TrayNotifyWnd", а у него уже child "TrayClockWClass"

HTHEME пытаюсь получить так:
OpenThemeData(hWnd, 'clock'), но регулярно возвращается NULL.
Пробовал hWnd всех вышеперечисленных окон, окно Desktop'а.
GetWindowTheme тоже возвращает NULL.

По идее, искомый результат даёт один из вызовов функции GetThemeColor:
GetThemeColor(hTheme, CLP_TIME, CLS_NORMAL, TMT_COLOR, aColor) или
GetThemeColor(hTheme, CLP_TIME, CLS_NORMAL, TMT_TEXTCOLOR, aColor)
(других parts и states у trayclock нету (см. TmSchema.h), другие property types по идее не подходят)

Может, нельзя получить HTHEME давая HWND окна другого процесса?

PS
Пробовал в Delphi 7 используя UxTheme.pas


--
Yaroslav Mironov,
AlfaSoft Research Labs
mailto:mironov@alfasoftweb.com
http://www.alfasoftweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.