Страница: 1 |
Вопрос: XP Style Controls... Победа близка! | Добавлено: 06.01.06 13:27 |
Автор вопроса: ![]() |
Значица так.
Сделать почти все контролы стилизованные под ХР. Создаем манифест с именем <Имя_программы>.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 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 1876 ![]() |
Профиль | Цитата | #1 | Добавлено: 06.01.06 14:14 |
Я чё-то не понимаю...
Это типа новая информация, да? |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #2 | Добавлено: 06.01.06 14:30 |
![]() |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 06.01.06 16:25 |
Это типо фак, на который надо всех посылать при возникновении вопроса по теме |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: 298742928 Вопросов: 58 Ответов: 340 |
Профиль | Цитата | #4 | Добавлено: 06.01.06 17:40 |
Это типо фак, на который надо всех посылать при возникновении вопроса по теме
ну типа так. Повторяю, кто еще какие неприятности найдет - пишите, если хоть кто-нить будет этим пользоваться... ![]() |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 1876 ![]() |
Профиль | Цитата | #5 | Добавлено: 06.01.06 18:01 |
Ну вот неприятность, к примеру. Дальше заголовка можно не читать. А можно читать.
http://support.microsoft.com/default.aspx?scid=kb;en-us;309366 |
Номер ответа: 6 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 1066 |
Профиль | Цитата | #6 | Добавлено: 06.01.06 18:47 |
Неприятностей с манифестом - море.
Фак будет большой ![]() Делаем окно без заголовка, делаем ему дочерний листвью. Цепляем манифест. Если окно не перемещать, при клике по листвью нормально определяется номер кликнутого итема, Если окно перемещать вверх - влево, номер кликнутого определяется нормально. Если окно перемещать вправо-вниз, листвью начинает путать рамсы, и выдает неправильный номер кликнутого итема ![]() Лечится путем непрерывного вызова InvalidateRect в процессе перемещения окна. Окно постоянно колбасится при перемещении, некрасиво, но зато итем определяется правильно ![]() Или нужно вернуть заголовок окну. В общем, XP Style - это огромная задница. Хочется красоты - надо рисовать ручками, а не въезжать в рай на чужом ... манифесте. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() Вопросов: 215 Ответов: 1596 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 06.01.06 19:38 |
А я делаю свои батоны и доволен ![]() |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() Вопросов: 215 Ответов: 1596 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 06.01.06 19:41 |
А вообще спасибо Tamplier'у.
Инфа действительно полезная. Хоть она и общеизвестная, но я впервые виже ее в тщательно сгруппированом виде. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: 298742928 Вопросов: 58 Ответов: 340 |
Профиль | Цитата | #9 | Добавлено: 07.01.06 10:46 |
Неприятностей с манифестом - море.
Фак будет большой ![]() Дык на то он и делался ![]() В общем, XP Style - это огромная задница.
Хочется красоты - надо рисовать ручками, а не въезжать в рай на чужом ... манифесте. Этто естественно. Ведь каждый раз при изменении/проведении над объектом курсора программа обращаеся к манифесту, который ее посылает на comctl32.dll, и только потом все перерисовывает. А за это время еще что-то успело измениться и т.д... Это будет более менее нормально на сильных машинах. Для идеала надо писать на с++. Вот там, я думаю, глючить ниче не будет ![]() |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: 298742928 Вопросов: 58 Ответов: 340 |
Профиль | Цитата | #10 | Добавлено: 08.01.06 09:00 |
Вчера в одном инсталяторе с ХРюшными рюшками углядел, что он моргает. Отсюда напрашивается вывод: без глюков не будет. Ибо карма. И майкрософт. |
Страница: 1 |
|