-
Здравствуйте
Делаю для проводника shell extension, по нажатию пункта меню появляется моя форма, но в Windows XP контролы на ней отображаются не в "теме", в 7 все нормально, добавление манифеста не помагает
Подскажите как сделать контролы на форме в "теме", DXE2
-
А контролы стандартные Дельфовые?
-
манифест подключи след образом: resources.rc #define RT_MANIFEST 24
#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
ISOLATIONAWARE_MANIFEST_RESOURCE_ID RT_MANIFEST "manifest.xml" manifest.xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Microsoft.Windows.Shell.desk"
processorArchitecture="x86"
version="5.1.0.0"
type="win32"/>
<description>Windows Shell</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly> не забудь у манифеста правильную кодировку выставить.
-
> Rouse_ © (13.03.13 16:47) [2]
Не помогает
Ни как не получается, буду наверно DevExpress скины использовать
-
достаточно в папку с myapp.exe положить файл myapp.exe.manifest с вышеуказанным содержимым
-
> clickmaker © (14.03.13 17:22) [4]
Форма внутри dll, не .exe
-
> Форма внутри dll
по барабану
-
а, это же "для проводника shell extension"... Так по идее, там темы должны подхватываться... Ну или как Розыч говорит. Проверь, скомпилился ли вообще манифест внутрь dll
-
> clickmaker © (14.03.13 17:50) [7]
Смотрел в редакторе ресурсов, манифест в dll есть, пробовал в опциях отключать Runtime Themes
-
Жесть ни как не хочет
-
Проверь, вот это работает или нет? Если работает значит делаешь что-то не то. Правда там реализация отрисовки немного не правильная, но работать должно. http://rouse.drkb.ru/winapi.php#propsheetЗЫ: у себя сейчас проверил - работает как надо
-
А кстати чуть не забыл, под семеркой этого не требуется но вот в ХР были проблемы с активизацией контекста манифеста. Чтобы он подключился к твои контролам используй ActivateActCtx. Смотри использование в примере по ссылке выше в модуле ActivationCotext
-
> Rouse_ © (14.03.13 18:21) [10]
Рисуются в теме, буду смотреть исходник
-
Александр Спасибо Большое Проблема решается так
uses ActivationCotext.pas
var
ThemedActContext: TThemedActContext;
begin
ThemedActContext := TThemedActContext.Create;
try
ThemedActContext.Activate := True;
MessageBox(0, '', '', MB_YESNOCANCEL);
finally
ThemedActContext.Free;
end;
end; Отключить Runtime Themes Ресурсы и ActivationCotext.pas http://yadi.sk/d/TezGbF6D3HsLm
-
-
Проверь на семерке обязательно, там с этим были проблемы (избыточность вызова и падение с AV в shell32)
|