Страница: 1 |
|
Вопрос: initialize common controls
|
Добавлено: 02.11.04 17:21
|
|
Автор вопроса: Mihalыch | ICQ: 373-509-101
|
Где-то слышал, что можно сделать интерфейс программы как у ХР без использования UserControl'ов. А как разобраться не могу! Подскажите, кто знает.
Нашел в INete такой код, только не пойму че он делает, и вообще это то, что нужно или нет?
Код модуля:
Public Const ICC_LISTVIEW_CLASSES As Long = &H1 'listview, header
Public Const ICC_TREEVIEW_CLASSES As Long = &H2 'treeview, tooltips
Public Const ICC_BAR_CLASSES As Long = &H4 'toolbar, statusbar, trackbar, tooltips
Public Const ICC_TAB_CLASSES As Long = &H8 'tab, tooltips
Public Const ICC_UPDOWN_CLASS As Long = &H10 'updown
Public Const ICC_PROGRESS_CLASS As Long = &H20 'progress
Public Const ICC_HOTKEY_CLASS As Long = &H40 'hotkey
Public Const ICC_ANIMATE_CLASS As Long = &H80 'animate
Public Const ICC_WIN95_CLASSES As Long = &HFF 'everything else
Public Const ICC_DATE_CLASSES As Long = &H100 'month picker, date picker, time picker, updown
Public Const ICC_USEREX_CLASSES As Long = &H200 'comboex
Public Const ICC_COOL_CLASSES As Long = &H400 'rebar (coolbar) control
Public Const ICC_INTERNET_CLASSES As Long = &H800
Public Const ICC_PAGESCROLLER_CLASS As Long = 1000 'page scroller
Public Const ICC_NATIVEFNTCTL_CLASS As Long = 2000 'native font control
Public Const ICC_STANDARD_CLASSES As Long = 4000
Public Const ICC_LINK_CLASS As Long = 8000
Public Declare Sub InitCommonControls Lib "comctl32" ()
Public Declare Function InitCommonControlsEx Lib "comctl32" (lpInitCtrls As tagINITCOMMONCONTROLSEX) As Boolean
Public Type tagINITCOMMONCONTROLSEX ' icc
dwSize As Long ' size of this structure
dwICC As Long ' flags indicating which classes to be initialized.
End Type
Public Function InitComctl32(dwFlags As Long) As Boolean
Dim icc As tagINITCOMMONCONTROLSEX
On Error GoTo Err_OldVersion
With icc
.dwSize = Len(icc)
.dwICC = dwFlags
End With
InitComctl32 = InitCommonControlsEx(icc)
Exit Function
Err_OldVersion:
InitCommonControls
End Function
Код формы:
Private Sub Form_Load()
Call InitComctl32(ICC_LISTVIEW_CLASSES)
End Sub
Ответить
|
Номер ответа: 1 Автор ответа: Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106 Ответов: 1919
|
Профиль | | #1
|
Добавлено: 02.11.04 17:51
|
Как известно, при создании на Visual Basic 6 нельзя (вроде) создавать сразу программы, использующие новые стили у Windows (2k/XP/старше). Для этого нужно использовать API.
Можно создать манифест файл (xml по структуре). Даже есть программы, создающие их (манифесты). Далее нужно при иницализации формы вызвать функцию InitCommonControls/InitCommonControlsEx
'Это объявления для VB.NET
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" (ByRef TLPINITCOMMONCONTROLSEX As INITCOMMONCONTROLSEX) As Int32
<StructLayout(LayoutKind.Sequential)> _
Private Structure INITCOMMONCONTROLSEX
Public dwSize As Int32 'size of this structure
Public dwICC As Int32 'flags indicating which classes to be initialized
End Structure
'Это для объявления функций для VB5/6
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" (ByRef TLPINITCOMMONCONTROLSEX As INITCOMMONCONTROLSEX) As Long
Private Type INITCOMMONCONTROLSEX
dwSize As Long 'size of this structure
dwICC As Long 'flags indicating which classes to be initialized
End Type
Вот пример манифеста:
Имя программы - VB.NET How-To XP Theme Support.exe
Имя манифеста - VB.NET How-To XP Theme Support.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="Microsoft.Winweb.MantaRay" type="win32" />
<description>.NET control deployment tool</description>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
</assembly>
Если надо, то могу выслать пример использования манифестов на .NET.
Ответить
|
Страница: 1 |
Поиск по форуму