![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Панели групп как в Windows Explorer через MS Visual Styles API ? [D7, WinXP]
Rius © (2005-05-20 16:54:00)В общем все получается красиво разрисовать через ThemeApi, но есть один глюк с панелями групп (в Проводнике Windows XP/2003 слева, типа там "System Tasks", "Other Places", "Details".
Данные части имеют идентификаторы:
EXPLORERBAR
EBP_HEADERBACKGROUND
EBP_NORMALGROUPBACKGROUND
EBP_NORMALGROUPCOLLAPSE
EBP_NORMALGROUPEXPAND
EBP_NORMALGROUPHEAD
EBP_SPECIALGROUPBACKGROUND
EBP_SPECIALGROUPCOLLAPSE
EBP_SPECIALGROUPEXPAND
EBP_SPECIALGROUPHEAD
При выводе через DrawThemeBackgroundрисуется соответствующее изображение, находящееся в файле стиля *.msstyles(например Longhorn Aero.msstyles)
Сам же Windows Explorer берет их из библиотеки shellstyle.dll.
Вопрос: как мне рисовать нужные изображения как WinExplorer через ThemeApi ? Т.е. не доставать их вручную как ресурсы из DLL, а чтобы это делало API.
работаю в C++Builder 6, но никакой разницы от Delphi 7 не должно быть.
Ученик (2005-05-21 19:33:00) [1]>Rius (20.05.05 16:54)
Похоже на Windows Explorer, возможно, что-то не так
uses
Themes;
{$R *.dfm}
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
Details: TThemedElementDetails;
Rect: TRect;
begin
with PaintBox1 do begin
Rect := ClientRect;
Rect.Bottom := Rect.Top + 30;
Details := ThemeServices.GetElementDetails(tebNormalGroupHead);
ThemeServices.DrawElement(Canvas.Handle, Details, Rect);
Details := ThemeServices.GetElementDetails(tebNormalGroupBackground);
Rect := ClientRect;
Rect.Top := Rect.Top + 30;
ThemeServices.DrawElement(Canvas.Handle, Details, Rect)
end
end;