Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / xp/vista style; common controls 5/6; regsvr32 на x86/x64 / 25 сообщений из 62, страница 1 из 3
11.04.2010, 04:46
    #36572637
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Вот здесь обсуждался вопрос:
/topic/740043&pg=1
Был предложен контрол
Konst_Oneназывается он UpDown
Было также упомянуто, что не удается придать ему 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 (а вдруг была?) И не пошлет ли произвольная система мой инсталлер куда подальше с такими действиями? А вот ругань при установке мне меньше всего нужна...
...
Рейтинг: 0 / 0
11.04.2010, 16:39
    #36572846
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
В принципе поигрался с инсталлятором (Smart Install Maker) на тестовом приложении из одного exe:
Есть 2 опции
I. Файл
1) Путь извлечения
2) Если файл существует: Спросить/Спросить если новее/Заменить/Заменить если новее/Пропустить
3) Деинсталировать: ДА/нет
II. ActiveX
1) Файл
2) Разрегистрировать при деинсталляции: ДА/нет

Остановился на варианте:
I. Файл
1) Путь извлечения =%SystemDir%\COMCTL32.OCX
2) Если файл существует:Пропустить
3) Деинсталировать: ДА
II. ActiveX
1) Файл=%SystemDir%\COMCTL32.OCX
2) Разрегистрировать при деинсталляции: нет

На x64 COMCTL32.OCX файл отправляется в SysWOW64, что наверно корректно.

Возникают 3 ситуации:
1) COMCTL32.OCX уже был в %SystemDir% и был зарегистрирован:
при установке ничего не меняется и пользуемся имеющимся файлом
при деинсталляции опять ничего не меняется, т.е. COMCTL32.OCX не удаляется и не разрегистрируется,т.е. все остается как было.
2) COMCTL32.OCX уже был в %SystemDir% но НЕ БЫЛ зарегистрирован:
при установке регистрируется имеющийся файл, им и пользуемся
при деинсталляции COMCTL32.OCX не удаляется но остается зарегистрированным
3) COMCTL32.OCX НЕ БЫЛО в %SystemDir%
при установке берется НАШ файл и регистрируется
при деинсталляции наш COMCTL32.OCX физически УДАЛЯЕТСЯ, хотя регистрация и остается, но бесполезна за отсутствием файла.

Вопросы все же по этой части остались:
Если файл существует:Пропустить
Опции "Спросить/Спросить если новее" меня не устраивают, это некрасиво и потом...передоверять юзеру ответ на вопрос с ответом на который сам сомневаешься... как то неправильно
Опции "Заменить/Заменить если новее" ??? Когда я пытался так поступать с cdosys.dll, виста элементарно ругалась, но в том случае я просто в итоге отказался от установки cdosys.dll, т.к. оно обязано присутствовать на всех OS начиная с XP и правильный для каждой OS.
Т.е. если "Заменить" то система со мной не поругается?
А если "Пропустить", то не рискую нарваться на неправильную версию? (понятно, что случай, когда user взял файл Г.ocx и переименовал его в COMCTL32.OCX не рассматривается..)

Разрегистрировать при деинсталляции: нет
Скажем так, если я напишу "ДА", то моя прога при удалении удалит регистрацию существовавшую до ее установки. Как то неправильно
А с другой стороны если я устанавливаю и регистрирую СВОЙ файл, то он удалиться, а регистрация останется, мусор в реестре...

Я сам ненавижу когда чья-то прога при установке слишком много на себя берет, а при удалении не умеет "вынести за собой мусор" (если вообще умеет себя удалить, есть экземпляры которые вообще не делают uninstall, не обязательно вирусы).
Хотелось бы конечно каких-то комментариев от тех кто на этом собак кушал.
...
Рейтинг: 0 / 0
12.04.2010, 11:00
    #36573544
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
системные библиотеки обычно не требуют деинсталяции. чисти только папку со своей программой.
...
Рейтинг: 0 / 0
12.04.2010, 11:26
    #36573606
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Дмитрий77Существует ли удобный способ замены/преобразования?Открыть в текстовом редакторе *.vbp и заменить строку Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; mscomctl.ocx на Object={6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0; COMCTL32.OCX.

В файлах *.frm заменить аналогичные строки в заголовках, а так же все строки типа MSComctlLib.TreeView на ComctlLib.TreeView.

Это не решит все проблемы сразу, но по крайней мере сэкономит 90% времени. Если у вас используется тулбар с SubMenu, то их придется переложить на обычные менюшки, потому что у оригинального тулбара никаких субменю нет. Других архитектурных отличий нет, разве что у некоторых объектов отсутствуют некоторые редко используемые свойства.
...
Рейтинг: 0 / 0
12.04.2010, 23:01
    #36575217
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Konst_Oneсистемные библиотеки обычно не требуют деинсталяции. чисти только папку со своей программой.
Т.е. вы предлагаете:
Код: plaintext
1.
Деинсталировать: НЕТ
Разрегистрировать при деинсталляции: НЕТ
?
остается поверить Вашему опыту.
А что ваш опыт говорит по поводу
Код: plaintext
Если файл существует: Заменить/Заменить если новее/Пропустить
?
Вариант "Пропустить" кажется мне наиболее безопасным. А не получится что там какое-нибудь непотребное старье лежит? (повторюсь, вариант что там лежит переименованная Г.ocx не рассматривается, ибо если таковая там лежит, то user "сам дурак").
Повторюсь также что любого варианта "заменить" я побаиваюсь, т.к. не хочу нарваться на "системную ругань" при инсталляции.

AntonariyДмитрий77Существует ли удобный способ замены/преобразования?Открыть в текстовом редакторе ....
В принципе я и сам так подумывал, за четкие инструкции чего на что менять спасибо.
AntonariyЕсли у вас используется тулбар с SubMenu, ....
Таковых не держим, есть только с кнопочками...
...
Рейтинг: 0 / 0
12.04.2010, 23:51
    #36575273
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Дмитрий77
Возникают 3 ситуации:
1) COMCTL32.OCX уже был в %SystemDir% и был зарегистрирован:

Если файл более младшей версии находился и был зарегистрирован в каталоге: Ё:\У бабушки на печке\ то программа инсталлятора должна заменить его новой версией именно в этой папке.
...
Рейтинг: 0 / 0
13.04.2010, 00:44
    #36575304
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Так, бабушку с печкой можно и подвинуть...
только бабушки-дедушки отдыхают...
мне уже не до этого.
Потому что я сделал то что предложил Antonary и ужаснулся тому чего увидел.
Кнопки на Тулбар стали обычными, но это бог с ним...не самое страшное

Самые большие проблемы вижу с Listview...
FullRawSelect не вижу, многого не вижу.
У меня все алгоритмы с перестановкой столбцов основаны на....
ListView1(0).ColumnHeaders("Name").Position
что ж ее перерисовывать теперь каждый раз...
с картинками в заголовках столбцов проблемы...
ListSubItems(i). и т.п. не работатает...
.ListSubItems(i).ToolTipText

Я в печали....
6-ки м.б. и глючные но интеллекта поболе будет и я этим интеллектом сильно воспользовался при написании проги.

Неужели никак их нельзя со стилями подружить?

Т.е. какие варианты?
1) частичная замена 6->5, чтоб хоть что-то выглядело потребно, как то не то...
2) постепенная замена на API, ну эт.я замучаюсь с Listview
3) замена все же всего на 5 и дописывание через API, можно конечно, но опять кучу всего писать и все равно кучу всего изучать

а приложение этими сабклассами над контролами итак перегружено...

90% экономии времени это мягко сказано...до того как я это сделал (за 15 минут), я тоже думал что это и будет основная проблема.

Всего то нужно чтоб стили применялись, м.б. есть какое другое решение, не требующее переписывания 2/3 кодов, которые к сути-то программы не относятся.
М.б. есть современные какие контролы, аналог 6, но с поддержкой всех этих манифестов.

5-ку то в 6-ку небось легче превратить..
...
Рейтинг: 0 / 0
13.04.2010, 11:17
    #36575820
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
авторКнопки на Тулбар стали обычнымиА какими были? Хорошо бы скриншоты какие-нибудь.

авторFullRawSelect не вижуНужно с помощью апи добавить стиль LVS_EX_FULLROWSELECT (&H20). Это просто.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
pvSetExStyle ListView1.hWnd, LVS_EX_FULLROWSELECT, True

Private Sub pvSetExStyle(ByVal hWnd As Long, ByVal lStyle As Long, ByVal ToSet As Boolean)
Dim lS As Long
    If (m_hListView) Then
        lS = SendMessageLong(hWnd, LVM_GETEXTENDEDLISTVIEWSTYLE,  0 ,  0 )
        If ToSet Then
            lS = lS Or lStyle
        Else
            lS = lS And Not lStyle
        End If
        Call SendMessageLong(hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,  0 , lS)
    End If
End Sub
авторУ меня все алгоритмы с перестановкой столбцов основаны на....LVCOLUMN.iOrder — это чуть сложнее, готового примера нет.

авторс картинками в заголовках столбцов проблемыКакие?

авторListSubItems(i). и т.п. не работатает...
Код: plaintext
ListView.ListItems(x).SubItems(i) = "это текст овое свойство, а не объектное"

автор.ListSubItems(i).ToolTipTextПожалуй, это самое сложное по сравнению с предыдущими пунктами. Но в принципе тоже ерунда.

автор3) замена все же всего на 5 и дописывание через API, можно конечно, но опять кучу всего писать и все равно кучу всего изучатьЭто лучший вариант.

автор90% экономии времени это мягко сказано...до того как я это сделал (за 15 минут), я тоже думал что это и будет основная проблема.Поверьте, это все равно быстрее, чем если бы вы взялись пересоздавать все руками. Быстрее только оставить все как было.

авторМ.б. есть современные какие контролы, аналог 6, но с поддержкой всех этих манифестов.Что-то есть на vbaccelerator, но не советую.

Все, что вы видите на скриншоте, это пятые контролы, приправленные api (крестик закрытия таба в контролы не входит, сам рисую). По-моему овчинка выделки стоит.

Jah loves you.
...
Рейтинг: 0 / 0
13.04.2010, 11:51
    #36575953
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Antonariy,
>>Кнопки на Тулбар стали обычными
>А какими были? Хорошо бы скриншоты какие-нибудь.
Да что скриншоты...
http://sql.ru/forum/actualthread.aspx?tid=750468
Плоским я сделал, но надо уменьшить высоту 420->360 (видимо в точках) иначе сверху вплотную к меню (как и было) а снизу большой зазор до Treeview/Listview.
(высота кнопки 330). 420 он лепит минимум для стандартных кнопок.
С этим промучился так и не нашел ответа...

>>У меня все алгоритмы с перестановкой столбцов основаны на ListView1(0).ColumnHeaders("Name").Position...
>LVCOLUMN.iOrder — это чуть сложнее, готового примера нет.

А вот это если не осилю, то грош цена...
Она у меня загружает со статическими индексами а все position запоминает в реестре и применяет сразу после загрузки или переставляет при настройке последовательности столбцов
я пока это отключил при загрузке, чтоб хотя бы запустить в компиляторе, но это боюсь основная проблема

Потом ширина первого столбца (где только иконка) почему-то прыгнула, пока не выяснял.

>Нужно с помощью апи добавить стиль LVS_EX_FULLROWSELECT (&H20).
с этим уже разобрался в первую очередь довольно быстро

С картинками и примечаниями разобраться думаю не сложно, но это потом.
Пока что задачи.
1) чтоб Запускалась в компиляторе
2) Чтоб закрывалась без вылета (в реестре запоминает несуществующие position)
3) Чтоб компилировалось

На пункте (3) думаю большинство глюков отловится.
Ну а потом играться и смотреть на глюки...

>>3) замена все же всего на 5 и дописывание через API, можно конечно, но опять кучу всего писать и все равно кучу всего изучать
>Это лучший вариант.
Лучший то он лучший, но это читай переписывать прогу с нуля. Надо все же сделать замену 6->5, получить рабочую прогу, а от контролов можно потом отказываться последовательно (по настроению), т.е. например StatusBar просто , а с Listview (у меня их 3шт-массив и сильно накручены) черт ногу сломит, поэтому отказаться в лоб это пуля в голову. Ну и если меня когда-либо хватит на все это, то в итоге убрать ссылку на контролы.
...
Рейтинг: 0 / 0
13.04.2010, 12:07
    #36576024
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Дмитрий77Konst_Oneсистемные библиотеки обычно не требуют деинсталяции. чисти только папку со своей программой.
Т.е. вы предлагаете:
Код: plaintext
1.
Деинсталировать: НЕТ
Разрегистрировать при деинсталляции: НЕТ
?.

нет, Я предлагаю регистрировать только новые версии системных библиотек исключительно в системных директориях. При деинсталляции их вообще не трогать.
...
Рейтинг: 0 / 0
13.04.2010, 12:42
    #36576171
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Konst_One,

я написал
Код: plaintext
1.
Деинсталировать: НЕТ
Разрегистрировать при деинсталляции: НЕТ
вы пишите
Код: plaintext
При деинсталляции их вообще не трогать.
Это разве не одно и то же?

вы пишите
Код: plaintext
исключительно в системных директориях
я написал
Код: plaintext
 1 ) Путь извлечения =%SystemDir%\COMCTL32.OCX
То же самое?

вы пишите
Код: plaintext
Я предлагаю регистрировать только новые версии системных библиотек 
так предлагаете?
Код: plaintext
1.
 1 )Если файл существует: Заменить если новее
 2 )+зарегистрировать (даже если замены не было)
так ведь?
Пункт (2) во первых будет выполнен по-любому (в инсталляторе в ActiveX опции либо регистрировать, либо нет), а во вторых это правильно,т.к. вдруг там новая версия лежит и она не зарегистрирована.

Если так то что думаете по поводу возможной ругани системы при замене файла?
...
Рейтинг: 0 / 0
13.04.2010, 13:09
    #36576268
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
авторПункт (2) во первых будет выполнен по-любому (в инсталляторе в ActiveX опции либо регистрировать, либо нет), а во вторых это правильно,т.к. вдруг там новая версия лежит и она не зарегистрирована

это делать не надо. если не заменяли, то ничего и не делаем
...
Рейтинг: 0 / 0
13.04.2010, 13:57
    #36576415
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Konst_One,
так заменить и регистрировать это независимые пункты.
(нет опции не регистрировать если не заменяли)

и потом регистрировать по любому разумно. Я когда-то бухнул ocx в system, регистрировать не стал, и забыл про нее. А инсталлер ее увидит, заменять не станет и регистрировать тоже не станет. И что?

У меня другая проблема возникла (с одной-главной формой).
Картиночки везде вдруг раз-все "черненько"-образные. Думал ресурся съелись, перегрузил VB, перегрузил PC-не помогает. Мувнул опять из резервной копии проекта (где "6") эту форму в подопытный проект, заменил все на "5" в блокноте. Работает, картинки цветные. Поковырялся с кодами, запустил, опять чернота. (exe даже пока скомпилировать не могу из-за проблем с кодами, чтоб посмотреть чего там будет:цветное или черное). В чем проблема?
...
Рейтинг: 0 / 0
13.04.2010, 13:59
    #36576422
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Без тестового примера сказать сложно.
...
Рейтинг: 0 / 0
13.04.2010, 15:37
    #36576670
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Antonariy,
легко сказать, предлагаете сделать тестовый из одного тулбара 6, переделать в 5 и посмотреть чего будет, вряд ли это воспроизведется. Вчера игрался такого не было. Я даже не могу exe сделать, пока не перепишу хорошую часть кодов, а это работа надолго. Ну допустим перепишу с черными картинками, потом перекину опять 6 в 5 и заменю коды в форме на то что переписал, но это ж повторится, а если буду дорабатывать проект уже с "5".? не дело...
Причем происходит как-то внезапно (сохранение даже не обязательно), но если раз произошло то не помогает уже ничего, т.е. даже на другом pc этот проект уже показывает черные.
Скорее всего внутренние ресурсы vb где-то на грани.
Можно конечно попробовать вручную пересоздать ImageList-ы. Посмотреть, что будет.
...уже посмотрел, добавил ImageList с двумя цветными картинками, цветными они были очень недолго, и главное эта скотина автосохраняет эту дрянь в этом непотребном виде.
Мне кажется слишком много всего в приложении, 5-е контролы не выдержат. Они гораздо более глючные чем 6-е.
...
Рейтинг: 0 / 0
13.04.2010, 15:51
    #36576708
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Дмитрий77Они гораздо более глючные чем 6-е.Вы не любите кошек? Вы просто не умеете их готовить )))
Я пришел к противоположному выводу.

Jah loves you.
...
Рейтинг: 0 / 0
13.04.2010, 16:24
    #36576814
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Да люблю я их готовить...
Даже с этим справился...
>>У меня все алгоритмы с перестановкой столбцов основаны на....
>LVCOLUMN.iOrder — это чуть сложнее, готового примера нет.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    If (StartParam.InPositionIcon >=  1 ) And (StartParam.InPositionIcon <=  13 ) Then
        With lvFormat
            .mask = LVCF_ORDER
            .iOrder = CInt(StartParam.InPositionIcon) -  1 
        End With
        Call SendMessage(ListView1( 0 ).hWnd, LVM_SETCOLUMN, ListView1( 0 ).ColumnHeaders("Icon").Index -  1 , lvFormat)
    End If
'    If (StartParam.InPositionIcon >= 1) And (StartParam.InPositionIcon <= 13) Then
'        ListView1(0).ColumnHeaders("Icon").Position = CInt(StartParam.InPositionIcon)
'    End If
и т.д. по тексту

а толку...эти почерневшие иконки меня вконец расстроили
Это признак нехватки ресурсов. Но ресурсы есть,если бы их не было,я бы получил "Out memory" в куче других прог. И с "6" такого никогда не было. А на тестовом приложении я вам это не покажу, потому что там будет один тулбар и один ImageList и им всегда все хватит.
А фиг его знает, м.б. в форме много кода, м.б. еще чего, м.б. сабклассинги на "5" случайно так действуют.

>замена все же всего на 5 и дописывание через API, можно конечно, но опять кучу всего писать и все равно кучу всего изучать
>Это лучший вариант.

Ну лучший наверно оставлять 6-ку и постепенно переписывать на API. Потому как заменить на "5" означает все разбомбить, кое-как запустить и потом долго восстанавливать из руин.

Кошки это хорошо, но на тек. момент больше хочется выть от безысходности. Вы мне там где-то давали контролы через API, пойти чтоль посмотреть, но это не на пару дней как надеялся через 5 (надежда еще теплится, но все меньше).
...
Рейтинг: 0 / 0
13.04.2010, 16:39
    #36576840
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Сколько у вас форм в проекте?

Попробуйте создать новый проект, подключить пятые контролы, скопипастить на форму ImageList с этими черными иконками и то, что там у вас с ним связано.

Jah loves you.
...
Рейтинг: 0 / 0
13.04.2010, 16:39
    #36576841
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Дмитрий77а толку...эти почерневшие иконки меня вконец расстроили
Это признак нехватки ресурсов. Но ресурсы есть,если бы их не было,я бы получил "Out memory" в куче других прог.
Почерневшие иконки это может быть признак нехватки GDI+ ресурсов? В частности там было ограничение на 9999(по моему) открытых дескриптора в рамках одного приложения. Сам на это нарывался.
Попробуй посмотреть в task manager'e
Закладка "Процессы", в меню "Вид" пункт "Выбрать столбцы", там поставить птицу на "Объекты GDI"

Ы?
...
Рейтинг: 0 / 0
13.04.2010, 16:42
    #36576846
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
и ещё помниться была какая-то засада с цветностью иконки, которую помещаешь в imagelist, из-за этого она портилась при сохранении проекта
...
Рейтинг: 0 / 0
13.04.2010, 17:10
    #36576944
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Konst_Oneи ещё помниться была какая-то засада с цветностью иконки, которую помещаешь в imagelist, из-за этого она портилась при сохранении проектаImageList из ocx не поддерживает 32 бита.
...
Рейтинг: 0 / 0
13.04.2010, 17:14
    #36576958
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
>Сколько у вас форм в проекте?
11штук, но проблема возникает только в основной, и только с ImageList-ами, и только после конвертации в версию 5, ну собственно все картинки в основном в них и сидят.
>скопипастить на форму ImageList с этими черными иконками и то, что там у вас с ним связано
цветным оно уже не станет даже в другом проекте.


>Попробуй посмотреть в task manager'e... "Объекты GDI"
попробовал
в среде разработки при запуске и вообще показывает 1200-1230 неважно "6" или "5".
Скомпилированный exe ("6") выдает в 2 раза меньше т.е.620-630.

>была какая-то засада с цветностью иконки, которую помещаешь в imagelist, из-за этого она портилась при сохранении проекта
для мелких стараюсь использовать 256цветов ибо делать больше в vb6 накладно, а меньше соотв. неэстетично.
Но данный глюк возникает не при сохранении а после нескольких просто запусков, но потом уже не лечится никак.
Возникло первый раз после того как
поигрался с кодом что привел выше (вместо .Position)
возможно после того как закомментировал сохранение этих position в реест при закрытии (до того как я это сделал VB у меня просто вылетал при закрытии вместе с компилятором из-за несоответствия кода 5 и 6, но глюка с иконками не было).
М.б. какое неосвобождение ресурсов при корректном именно закрытии приложения.
Для получения черного эффекта надо запутить и закрыть приложение (не среду) несколько раз.
Надо б поиграться конечно, свеже конвертированную форму только запомнить, чтоб каждый раз не переделывать... М.б. почему-то получается 1200*8=>9999 надо отследить...
...
Рейтинг: 0 / 0
13.04.2010, 17:21
    #36576995
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Дмитрий77>Сколько у вас форм в проекте?
11штук, но проблема возникает только в основной, и только с ImageList-ами, и только после конвертации в версию 5, ну собственно все картинки в основном в них и сидят.11 форм — это скромный проект, нехватки ресурсов или переполнения GDI быть не может.
Дмитрий77>скопипастить на форму ImageList с этими черными иконками и то, что там у вас с ним связано
цветным оно уже не станет даже в другом проекте.
Вот я и хочу на это посмотреть.
...
Рейтинг: 0 / 0
13.04.2010, 18:08
    #36577146
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
Antonariy,

У меня это произошло на простецком приложении с одной формой
Я просто делал анимацию иконки в трее, приложение было сервисом, и иконка обеспечивала связь с космосом. Приложение писал на NET в 2005 студии. Как потом выяснилось загрузка иконки в объект наращивала счетчик GDI дескрипторов, а уничтожение объекта не приводило к освобождению использованного дескриптора.
Игорь Горбоносв общем переделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private bmp( 0  To  1 ) As Icon
' Загружаю в начале
bmp(0) = Drawing.Icon.FromHandle(New Bitmap(ImageList1.Images.Item(0)).GetHicon)
bmp(1) = Drawing.Icon.FromHandle(New Bitmap(ImageList1.Images.Item(1)).GetHicon)
...
' Потом просто меняю иконку
Try
            Me.NotifyIcon1.Icon.Dispose()
            Me.NotifyIcon1.Icon = bmp(bFlag)
            'bmp.Dispose()
        Catch ex As Exception
            Me.NotifyIcon1.Visible = False
            Me.NotifyIcon1.Visible = True
            Me.NotifyIcon1.Icon.Dispose()
            Me.NotifyIcon1.Icon = bmp(bFlag)
            'bmp.Dispose()
        End Try
...
и счетчики замерли на 48 :) А чего только не перепробовал
...
Рейтинг: 0 / 0
13.04.2010, 18:16
    #36577166
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xp/vista style; common controls 5/6; regsvr32 на x86/x64
VB6 в этом плане больше защищен от дурака. Нужно делать что-то уж совсем непотребное непосредственно через gdi, чтобы добиться такого эффекта. Или забывать выгружать навороченные динамические юзерконтролы.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / xp/vista style; common controls 5/6; regsvr32 на x86/x64 / 25 сообщений из 62, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]