Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 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.

Ответить

Номер ответа: 2
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #2 Добавлено: 02.11.04 17:59
С VBNET почти не знаком, но серавно вышли. Попробую разобраться. Заранее спасибо!

Ответить

Номер ответа: 3
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #3 Добавлено: 02.11.04 18:11
Можно скачать их (6.5 мегов) из:
http://download.microsoft.com/download/e/d/2/ed214d90-68c3-400f-8ae4-b616845af10b/101vbnetsamples.exe

Или пиши мыло - вышлю только один пример.

Ответить

Номер ответа: 4
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #4 Добавлено: 02.11.04 18:18
Забыл - пример маленький

Ответить

Номер ответа: 5
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #5 Добавлено: 02.11.04 18:24
Я скачал по твоей ссылке, буду разбираться.
Последнее сообщение не понял.

Ответить

Номер ответа: 6
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #6 Добавлено: 02.11.04 18:35
Хорошо, если что, то можешь писать сюда или ко мне.
А на счет последнего поста - забей.

Ответить

Номер ответа: 7
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #7 Добавлено: 02.11.04 18:42
Панял, забил, если что напишу! Большой сенкс!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам