![]() |
|
|
|
|
#1
|
||||
|
||||
|
Необходимо сделать в длл поддержку стилей Windows XP/Vista, даже, если приложение, вызывающее эту длл, не имеет этой поддержки (манифеста).
|
|
#2
|
|||
|
|||
|
Манифест - это просто xml файл.
Попробуй просто его положить в ресурсы либы. Сам файл можно взять в сырцах VCL. |
|
#3
|
||||
|
||||
|
Что такое манифест я знаю.
Проблема в том, чтоб заставить его работать в длл. Допустим у меня есть приложение без манифеста и оно вызывает функцию Х из длл с манифестом. В этой функции происходит показ диалога, который должен поддерживать стили XP/Vista, но у меня этот диалог показывает без оформления XP, хотя в ресурсах длл манифест есть. Пробовал просто кинуть файлы <имя приложения>.manifest и <имя длл>.manifest в папку с программой, но тоже не помогло. |
|
#4
|
|||
|
|||
|
Тогда гораздо сложнее. Надо "руками" инициализировать Theme API. Плотно не работал, так что советов особо дать не смогу
![]() |
|
#5
|
||||
|
||||
|
Хм.. Здесь попробуй посмотреть(первое что выдал гугл
):http://www.delphimaster.ru/articles/..._xp/index.html http://base.vingrad.ru/view/47-Theme-API |
|
#6
|
||||
|
||||
|
во второй статье только про подключение библиотеки тем, а не о ее использовании, а в первой статье я мало чего понял...
|
|
#7
|
||||
|
||||
|
Цитата:
Любую прогу открываешь Resorce Hackerom вытаскиваешь manifest.res патом кладешь в папку с проектом... и ищешь это фразу в коде и дописываешь... {$R *.dfm} {manifest.res} |
|
#8
|
||||
|
||||
|
Цитата:
Прочитай 3-й пост этой темы... |
|
#9
|
||||
|
||||
|
{$R manifest.res}
|
|
#10
|
||||
|
||||
|
Код:
uses XPman; |
|
#11
|
||||
|
||||
|
Ни Casper-Hacker, ни M.A.D.M.A.N. не поняли суть вопроса.
Задача подключить манифест для DLL, т.е. я написал бибилиотеку-плагин, которая может быть использована в приложении без манифеста. Мне нужно, чтобы по время использования этим приложением моей dll, само приложение работало без манифеста, а диалоги, кот. вызываются из моей библиотеки были оформлены как с манифестом. |
|
#12
|
||||
|
||||
|
Отключи манифест в приложении и подключи в dll. Диалоги из dll будут с манифестом, а контролы из приложения - без. В чем проблема то?
|
|
#13
|
||||
|
||||
|
Хм... Casper-Hacker , 0nni , M.A.D.M.A.N. а вы проверяете то что пишите?
Например: Код:
library example;
uses
Forms, StdCtrls, XPMan;
{$R *.res}
var f:TForm;
b:TButton;
procedure tmp;
begin
end;
exports
tmp name 'tmp';
begin
f := TForm.CreateParented(0);
f.Width := 400;
f.Height := 200;
f.Position := poScreenCenter;
f.FormStyle := fsStayOnTop;
f.Visible := true;
b := TButton.Create(f);
b.Top := 8;
b.Left := 8;
b.Height := 25;
b.Width := 75;
b.Caption := 'Button';
b.Parent := f;
b.Visible := true;
end.Хоть и добавлен XPMan вид формы не меняется. А если манифест добавить в главное приложение, то с манифестом оформлена и главная форма, и та, что создается в dll. Как сделать так, чтоб только dll - используя манифест похоже что никак, наверно придётся разбираться с ThemeAPI |