Применение тем 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
Затем <Файл>, <Сохранить>... Всё! Программа теперь будет использовать темы Windows XP/2003 без файла компаньона
Важное ограничение: Эти скины будут отображаться только если программа работает под управление Windows XP/2003. А для использования скинов в Windows 9x/Me используйте программу: StylishApp (по моему так называется)
Оставить комментарий
Комментарии
<?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>
По сути тоже самое, но я убрал лишние тэги и все заработало)))
Добавка к розмышлению...
Если в 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
И ни какой манифест не поможет, проверено...