Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: XP Style Controls... Победа близка! Добавлено: 06.01.06 13:27  

Автор вопроса:  Tamplier | ICQ: 298742928 
Значица так.
Сделать почти все контролы стилизованные под ХР.
Создаем манифест с именем <Имя_программы>.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="CompanyName.ProductName.YourAppName"
        type="win32" />
    <description>Your application description here</description>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
                type="win32"
                name="Microsoft.Windows.Common-Controls"
                version="6.0.0.0"
                processorArchitecture="X86"
                publicKeyToken="6595b64144ccf1df"
                language="*" />
        </dependentAssembly>
    </dependency>
</assembly>

А в модуль добавляем такую весчь:

Private Type tagInitCommonControlsEx
   lngSize As Long
   lngICC As Long
End Type
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" _
   (iccex As tagInitCommonControlsEx) As Boolean
Private Const ICC_USEREX_CLASSES = &H200

Public Function InitCommonControlsVB() As Boolean
   On Error Resume Next
   Dim iccex As tagInitCommonControlsEx
   ' Ensure CC available:
   With iccex
       .lngSize = LenB(iccex)
       .lngICC = ICC_USEREX_CLASSES
   End With
   InitCommonControlsEx iccex
   InitCommonControlsVB = (Err.Number = 0)
   On Error Goto 0
End Function

Public Sub Main()
   InitCommonControlsVB

   '  
   ' Start your application here:
   '

End Sub

Внимание! Необходима comctl32.dll версии 6 или выше!

Либо качаем вот отсюда http://vbaccelerator.com/home/VB/Code/Libraries/XP_Visual_Styles/Using_XP_Visual_Styles_in_VB/VB6_XP_Styles_Demonstration_-_Manifest_Resource.asp

Более подробная информация тут http://vbaccelerator.com/home/VB/Code/Libraries/XP_Visual_Styles/Using_XP_Visual_Styles_in_VB/article.asp

Подробнее о манифестах http://search.msdn.microsoft.com/search/results.aspx?qu=manifest&View=msdn&st=b

Это действует только на готовые, скомпилированные exe-файлы.

А как просмотреть как это все будет выглядеть во время дизайна? Элементарно! Создаем тот же манифест для вб6 и помещаем его в папку с программой.

Либо качаем отсюда http://www.vbaccelerator.com/home/VB/Code/Libraries/XP_Visual_Styles/Making_VB_Apply_Visual_Styles_at_Design_and_Debug_Time/VB6_IDE_Manifest.asp

Подробная информация тут http://www.vbaccelerator.com/home/VB/Code/Libraries/XP_Visual_Styles/Making_VB_Apply_Visual_Styles_at_Design_and_Debug_Time/article.asp


Но не все так прекрасно, как казалось бы.

Во-первых. Все это действует ТОЛЬКО НА СТАНДАРТНЫЕ КОНТРОЛЫ. Это раз.

Два. Во время дизайна возникают проблемы с палитрой. То есть, не отображаются цвета в палитре в свойствах.

Три. ОптионБаттоны нельзя так просто помещать во фрейм. У него будет черный фон, черный текст и изменить нельзя. Чтобы избавиться от неприятной мелочи делаем так. Во фрейм помещаем ПикчерБокс, лишаем его бордерстайла, делаем фон идентичным фрейму и ставим на него ОптионБаттоны и уже после этого делаем с ними все, что захотим.

Четыре. Сложные контролы типа ИмейджКомбо перерисовываются. Поэтому при долгом проведении по ним указателя они начинают мелькать.

Пять. Вообще во все фреймы надо ставить ПикчерБокс и только в них уже остальные контролы. Фрейм и все его содержимое будет мелькать при проведении по нему указателя. ПикчерБокс устраняет эту поблему.

Ну, вроде фсе. Кто еще что обнаружит - прошу писать сюда.

Ответить

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

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 06.01.06 14:14
Я чё-то не понимаю...
Это типа новая информация, да?

Ответить

Номер ответа: 2
Автор ответа:
 HACKER


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 06.01.06 14:30
:)

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 06.01.06 16:25
Это типо фак, на который надо всех посылать при возникновении вопроса по теме

Ответить

Номер ответа: 4
Автор ответа:
 Tamplier



ICQ: 298742928 

Вопросов: 58
Ответов: 340
 Профиль | | #4 Добавлено: 06.01.06 17:40
Это типо фак, на который надо всех посылать при возникновении вопроса по теме

ну типа так.
Повторяю, кто еще какие неприятности найдет - пишите, если хоть кто-нить будет этим пользоваться...
:)

Ответить

Номер ответа: 5
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #5 Добавлено: 06.01.06 18:01
Ну вот неприятность, к примеру. Дальше заголовка можно не читать. А можно читать.
http://support.microsoft.com/default.aspx?scid=kb;en-us;309366

Ответить

Номер ответа: 6
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #6 Добавлено: 06.01.06 18:47
Неприятностей с манифестом - море.
Фак будет большой :)

Делаем окно без заголовка, делаем ему дочерний листвью. Цепляем манифест. Если окно не перемещать, при клике по листвью нормально определяется номер кликнутого итема, Если окно перемещать вверх - влево, номер кликнутого определяется нормально. Если окно перемещать вправо-вниз, листвью начинает путать рамсы, и выдает неправильный номер кликнутого итема :)
Лечится путем непрерывного вызова InvalidateRect в процессе перемещения окна. Окно постоянно колбасится при перемещении, некрасиво, но зато итем определяется правильно :)
Или нужно вернуть заголовок окну.
В общем, XP Style - это огромная задница.
Хочется красоты - надо рисовать ручками, а не въезжать в рай на чужом ... манифесте.

Ответить

Номер ответа: 7
Автор ответа:
 someone



Вопросов: 215
Ответов: 1596
 Web-сайт: 123
 Профиль | | #7
Добавлено: 06.01.06 19:38
А я делаю свои батоны и доволен =) Мне ХРюшный стиль не нравится

Ответить

Номер ответа: 8
Автор ответа:
 someone



Вопросов: 215
Ответов: 1596
 Web-сайт: 123
 Профиль | | #8
Добавлено: 06.01.06 19:41
А вообще спасибо Tamplier'у.
Инфа действительно полезная. Хоть она и общеизвестная, но я впервые виже ее в тщательно сгруппированом виде.

Ответить

Номер ответа: 9
Автор ответа:
 Tamplier



ICQ: 298742928 

Вопросов: 58
Ответов: 340
 Профиль | | #9 Добавлено: 07.01.06 10:46
Неприятностей с манифестом - море.
Фак будет большой :)

Дык на то он и делался :)
В общем, XP Style - это огромная задница.
Хочется красоты - надо рисовать ручками, а не въезжать в рай на чужом ... манифесте.

Этто естественно. Ведь каждый раз при изменении/проведении над объектом курсора программа обращаеся к манифесту, который ее посылает на comctl32.dll, и только потом все перерисовывает. А за это время еще что-то успело измениться и т.д... Это будет более менее нормально на сильных машинах.
Для идеала надо писать на с++. Вот там, я думаю, глючить ниче не будет :)

Ответить

Номер ответа: 10
Автор ответа:
 Tamplier



ICQ: 298742928 

Вопросов: 58
Ответов: 340
 Профиль | | #10 Добавлено: 08.01.06 09:00
Вчера в одном инсталяторе с ХРюшными рюшками углядел, что он моргает. Отсюда напрашивается вывод: без глюков не будет. Ибо карма. И майкрософт.

Ответить

Страница: 1 |

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



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