Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Применение тем Windows XP/2003 в любых программах.

Автор: Косов Александр
16 мая 2003 года

Для того чтобы использовать темы от Windows XP/2003 в программе, написанной на любом визуальном языке программирования, который использует Windows Common Controls (VB/VC/BC++ и т.д.) достаточно создать файл-компаньон.

Пример:

Имеем файл: Game.exe

Чтобы применить к нему тему, создаем файл Game.exe.manifest и записываем в него следующий текст:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="Имя компании.Имя продукта.Приложение"
    type="win32"
  />
  <description>Описание приложения.</description>
  <dependency>
  <dependentAssembly>
  <assemblyIdentity
    type="win32"
    name="Microsoft.Windows.Common-Controls"
    version="6.0.0.0"
    processorArchitecture="X86"
    publicKeyToken="6595b64144ccf1df"
    language="*"
  />
  </dependentAssembly>
  </dependency>
  </assembly>

И все, теперь все элементы управления (стандартные) в программе Game.exe будут использовать скины Windows XP/2003.

Но если вам не нравиться таскать за экзешником ещё один файл, то вы можете встроить этот текст в сам экзешник. Для чего вам нужно создать файл с любым именем, допустим c:\manif.txt, и скопировать в него указанный выше текст. Затем найдите программу ResHacker или любую аналогичную (я буду показывать на примере ResHacker), запустите её, откройте экзешник вашей программы, и в меню , выберите пункт (рис. 1)


рис. 1

После чего откроется диалоговое окно, там нажмите кнопку и выберите файл, в который вы сохранили текст c:\manif.txt (рис.2)


рис. 2

Затем в окне диалога введите <Тип ресурса: 24> , <Имя ресурса: 1>, <Язык ресурса: 1049> (рис. 3), и нажмите <Добавить ресурс>.

Затем <Файл>, <Сохранить>... Всё! Программа теперь будет использовать темы Windows XP/2003 без файла компаньона

Важное ограничение: Эти скины будут отображаться только если программа работает под управление Windows XP/2003. А для использования скинов в Windows 9x/Me используйте программу: StylishApp (по моему так называется)

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
52K
31 августа 2009 года
H@KER
1 / / 31.08.2009
Мне нравитсяМне не нравится
26 мая 2010, 18:06:59
Якщо написати те, що в коментарях,то все працює
2.
31K
06 августа 2007 года
karlex
0 / / 06.08.2007
Мне нравитсяМне не нравится
9 января 2008, 22:49:55
Вместо того что предложено было вначале попробуйте вставить в файл это:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

По сути тоже самое, но я убрал лишние тэги и все заработало)))
3.
Аноним
Мне нравитсяМне не нравится
15 апреля 2006, 12:29:49
Всё получилось. В том смысле, что приложение запустилось, но стилей нихига не видно:((( Что не так!?
4.
Аноним
Мне нравитсяМне не нравится
26 октября 2005, 17:36:59
То что выше здесь сказано не всегда срабатывает...
Добавка к розмышлению...
Если в VB6 добавить модуль то темы применятся..., приэтом загрузку программы начинать с этого модуля ...
_________________________________
Код модуля...
_________________________________
Option Explicit
Public Type tagInitCommonControlsEx
lngSize As Long
lngICC As Long
End Type
Public Declare Function InitCommonControlsEx Lib "comctl32.dll" (iccex As tagInitCommonControlsEx) As Boolean
Public Const ICC_USEREX_CLASSES = &H200
Public Sub Main()
' we need to call InitCommonControls before we
' can use XP visual styles. Here I'm using
' InitCommonControlsEx, which is the extended
' version provided in v4.72 upwards (you need
' v6.00 or higher to get XP styles)
On Error Resume Next
' this will fail if Comctl not available
' - unlikely now though!
Dim iccex As tagInitCommonControlsEx
With iccex
.lngSize = LenB(iccex)
.lngICC = ICC_USEREX_CLASSES
End With
InitCommonControlsEx iccex
' now start the application
On Error GoTo 0
On Error Resume Next
FRM001.Show
'FRM001.Visible = False
If Err.Number <> 0 Then End 'MsgBox "Error Number: " & Err.Number, vbExclamation, "Error!": End
End Sub
5.
Аноним
Мне нравитсяМне не нравится
9 сентября 2005, 10:07:40
У меня в VB 6.0 не работает :(, когда создаю файл *.mainfest то запуская программу она выдаёт: Программа будет закрыта, что-то там неправильно настроено и амба! :(
6.
Аноним
+0 / -1
Мне нравитсяМне не нравится
8 сентября 2005, 21:17:02
Ни чего не выйдет по крайне мере на VB6, если на этапе компиляции программы не инициализирована Function InitCommonControlsEx Lib "comctl32.dll" (iccex As tagInitCommonControlsEx) As Boolean !.
И ни какой манифест не поможет, проверено...
7.
Аноним
Мне нравитсяМне не нравится
6 сентября 2005, 09:17:30
Как такое проделать с Win2000? Подскажите пож. akelahacker@mail.ru
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог