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 я не рассматриваю, т.к. кодов много и это не тривиально.
И в связи с этим несколько вопросов.

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
...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5