Xp/vista style; common controls 5/6; regsvr32 на x86/x64 - VB
Формулировка задачи:
Вот здесь обсуждался вопрос:
https://www.sql.ru/forum/actualthread.aspx?bid=22&tid=740043&pg=1
Был предложен контрол
Было также упомянуто, что не удается придать ему XP/Vista стиль.
Причину я нашел довольно быстро:
я везде использую Common Controls 6 (глючные, как кто-то тут выразился), а они не поддерживают стили через манифесты.
Если использовать Common Controls 5, то вопрос со стилями решается.
Я не стал разводить полемику по этому поводу, не было времени, но сейчас думаю вернуться к данной теме. Тот контрол, бог с ним, но я использую всякие Listview/Treeview в большом к-ве и надо бы с ними разобраться.
Т.е. для придания приложению правильных стилей мне надо заменить контролы на 5-ю версию.
Вопрос с заменой на API я не рассматриваю, т.к. кодов много и это не тривиально.
И в связи с этим несколько вопросов.
Т.е. понятно, что сначала добавлю '5', и когда все заменю, удалю '6'.
Но меня смущает сам процесс замены отдельно взятого контрола, ибо он может быть сильно напичкан свойствами, можно конечно и на бумажку переписать, но долго и надо аккуратно, чтоб не упустить ничего.
2)
Дело в том что с MSCOMCTL.OCX (6-я версия) я особо не парился, просто бухал в папку с программой при установке и все работало, при этом никаких глюков при установке и никакой самодеятельности на пользовательском компьютере. И это прекрасно прокатывает даже на x64-висте.
А что касается COMCTL32.OCX то ей надо делать regsvr32, причем cmd на Vista x64 пришлось запускать "от Админа". Насколько я понимаю эти тонкости, мой инсталлятор итак всегда запускается из-под админа, но все же я задумался...
https://www.sql.ru/forum/actualthread.aspx?bid=22&tid=740043&pg=1
Был предложен контрол
Было также упомянуто, что не удается придать ему XP/Vista стиль.
Причину я нашел довольно быстро:
я везде использую Common Controls 6 (глючные, как кто-то тут выразился), а они не поддерживают стили через манифесты.
Если использовать Common Controls 5, то вопрос со стилями решается.
Я не стал разводить полемику по этому поводу, не было времени, но сейчас думаю вернуться к данной теме. Тот контрол, бог с ним, но я использую всякие Listview/Treeview в большом к-ве и надо бы с ними разобраться.
Т.е. для придания приложению правильных стилей мне надо заменить контролы на 5-ю версию.
Вопрос с заменой на API я не рассматриваю, т.к. кодов много и это не тривиально.
И в связи с этим несколько вопросов.
1) Существует ли удобный способ замены/преобразования?
Т.е. понятно, что сначала добавлю '5', и когда все заменю, удалю '6'.
Но меня смущает сам процесс замены отдельно взятого контрола, ибо он может быть сильно напичкан свойствами, можно конечно и на бумажку переписать, но долго и надо аккуратно, чтоб не упустить ничего.
2)
Как правильно установить(и удалить) COMCTL32.OCX (и ей подобные) на произвольную систему (возможны XP/Vista/Win2003/2008,в перспективе Win7(но пока не рассматриваю) и любая комбинация x86/x64).
Дело в том что с MSCOMCTL.OCX (6-я версия) я особо не парился, просто бухал в папку с программой при установке и все работало, при этом никаких глюков при установке и никакой самодеятельности на пользовательском компьютере. И это прекрасно прокатывает даже на x64-висте.
А что касается COMCTL32.OCX то ей надо делать regsvr32, причем cmd на Vista x64 пришлось запускать "от Админа". Насколько я понимаю эти тонкости, мой инсталлятор итак всегда запускается из-под админа, но все же я задумался...
Куда класть COMCTL32.OCX? В папку программы? Или в System32? Если в System32, то на x64 в System32 или в SysWOW64? И надо ли ее удалять? (если в System...?) А если она уже была до моей установки? И опять же надо ли делать regsvr32 /u (а вдруг была?) И не пошлет ли произвольная система мой инсталлер куда подальше с такими действиями? А вот ругань при установке мне меньше всего нужна...
Решение задачи: «Xp/vista style; common controls 5/6; regsvr32 на x86/x64»
textual
Листинг программы
Private bmp(<font color="darkblue"><b>0</b></font> <font color="blue">To</font> <font color="darkblue"><b>1</b></font>) <font color="blue">As</font> Icon <font color="red">' Загружаю в начале bmp(0) = Drawing.Icon.FromHandle(New Bitmap(ImageList1.Images.Item(0)).GetHicon) bmp(1) = Drawing.Icon.FromHandle(New Bitmap(ImageList1.Images.Item(1)).GetHicon) ... '</font> Потом просто меняю иконку Try Me.NotifyIcon1.Icon.Dispose() Me.NotifyIcon1.Icon = bmp(bFlag) <font color="red">'bmp.Dispose() Catch ex As Exception Me.NotifyIcon1.Visible = False Me.NotifyIcon1.Visible = True Me.NotifyIcon1.Icon.Dispose() Me.NotifyIcon1.Icon = bmp(bFlag) '</font>bmp.Dispose() <font color="blue">End</font> Try ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д