Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сложно ли напичкать ListView 32-битными картинками?
|
|||
|---|---|---|---|
|
#18+
Сразу скажу, что с аналогичной задачей для Treeview я справился и остался доволен. Из этого екзампла: http://btmtz.mvps.org/treeview/ VBDirectoryTV: Make the TreeView into a DirListBox http://btmtz.mvps.org/treeview/vbdirectorytv.zip Как то я его уже использовал не думая. Но тогда не осознал. Вчера сидел плевался, но сегодня осознал и сделал, т.е. 1)Заменил GetSystemImagelist(SHGFI_SMALLICON) на пользовательский Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. нарисовал свою Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. Т.е. получив возможность добавлять Nodes с картинками заданного содержания как мне надо через API 3)сильно упростил сабклассинг (он там явно навернутый, для общего случая много лишнего) оставив лишь суть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В итоге получилось красиво и просто: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Вопрос собственно в чем... Насколько тяжело добавить всю эту 32-битность в ListView? Всякие там итемсы, сабитемсы(про header-ы не спрашиваю, там просто). Потому как с тривью провозился целый день, не считая попыток кот. делал раньше(хоть за бесполезную пока возню с прозрачным тулбаром отыгрался...). В принципе на том же сайте кажется пример с ListView тоже есть. Автор только почему-то наивно полагает что ListView и Treeview используются исключительно для отображения файловой системы, посему сильно накручивает коды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 03:40 |
|
||
|
Сложно ли напичкать ListView 32-битными картинками?
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Насколько тяжело добавить всю эту 32-битность в ListView?Странный вопрос. Сам же это сделал в п. 1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 12:51 |
|
||
|
Сложно ли напичкать ListView 32-битными картинками?
|
|||
|---|---|---|---|
|
#18+
Antonariy, вопрос далеко не странный. пункт 1 просто создает API-ImageList но для Treeview недостаточно просто его привязать и использовать без API: грубо говоря я не могу писать Set thisnode = TreeView1.Nodes.Add(, , "RootText", "RootText", pictureNormal, pictureSelected) Это во первых, поэтому понадобился нехилый пункт 2 более того мой новоявленный API-лист будет стерт VB-окружением поэтому надо отрабатывать If (Msg = TVM_SETIMAGELIST) Then Exit Function (пункт 3) Или вы хотите сказать что в случае ListView мы радостно установим API-ImageList через SendMessage и сможем оперировать Items-ами и SubItems-ми (c 32-х битными картинками из API-Image-листа) чисто по правилам VB (т.е. без API) и это прокатит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 13:08 |
|
||
|
Сложно ли напичкать ListView 32-битными картинками?
|
|||
|---|---|---|---|
|
#18+
Все равно вопросы странные :) Вы уже все знаете, что нужно делать, решите теперь, делать или нет. Разве что п 2) стоит переделать. Добавлять айтем нужно через объектную модель без картинки, а картинку устанавливать после через апи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 14:00 |
|
||
|
Сложно ли напичкать ListView 32-битными картинками?
|
|||
|---|---|---|---|
|
#18+
Хорошо, вопросы по сути тогда: AntonariyРазве что п 2) стоит переделать. Добавлять айтем нужно через объектную модель без картинки, а картинку устанавливать после через апи. Вы имеете ввиду переделать для Treeview? Я не нашел как это сделать по типу SendMessage(<...hwndNode, TVND_SETIMAGE, imgNum...>) Как тогда получить hwndNode(Node) и как установить картинку? По идее для Treeview итак неплохо, ибо ф-ция уже написана и осознана, и ей можно всегда пользоваться. Но если можно примерчик кода (в 2-3 строчки имею ввиду). Или намекаете на то, какой метод использовать в п.2 для ListView(Добавлять без картинки, а картинку после через апи)? Потому как эта идея мне больше нравится. Treeview как бы простенькие и статические у меня(то что уже накатал более чем...), а содержание ListView меняется динамически. Но честно с ListView еще не разбирался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 14:56 |
|
||
|
Сложно ли напичкать ListView 32-битными картинками?
|
|||
|---|---|---|---|
|
#18+
Да, именно для листвью, для тривью это сделать сложнее как раз из-за hNode. У листвью индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 15:18 |
|
||
|
Сложно ли напичкать ListView 32-битными картинками?
|
|||
|---|---|---|---|
|
#18+
А все же я чего-то недопонимаю. 32-bit это иконка + AlphaChanel (прозрачность?). Т.е. bmp + MaskColor я могу использовать без проблем через ресурсы + API-ImageList, но это 24bit. Т.е. если я тибрю красивую иконку из виндов, то я не могу ее использовать в лоб. Я должен переделать ее в bmp 24bit, при этом требуется некот. дорисовка "теней" цветами, и все равно получается "чуть хуже". Что упустил? Или bmp-24bit это максимум, что я могу выжать из VB? Потому как работа предстоит тупая и кропотливая, и делать ее дважды при недопонимании чего-то неохота. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 13:44 |
|
||
|
Сложно ли напичкать ListView 32-битными картинками?
|
|||
|---|---|---|---|
|
#18+
Не, ну по идее API-imagelist поддерживает 32-битнось, вопроса тогда 2: 1) Где держать этот зоопарк? потому что тогда надо vb-редактор ресурсов иконки 32-бит не понимает можно их вставлять через VC++6 редактор в res-файл, но vb-редактор их игнорирует... и т.п. и не факт что старый vc++ их не портит при вставке, редактировать точно не умеет можно еще пытаться править ресурсы иконок после компиляции... 2) Как доставать зверей из этого зоопарка, чтоб шкурка не почернела (да и чтоб вообще их увидеть) Потому как 24-bit bmp для 16х16 без альфа-канала погоды особо не делают, а гемороя все равно много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 15:21 |
|
||
|
Сложно ли напичкать ListView 32-битными картинками?
|
|||
|---|---|---|---|
|
#18+
Эге, дело сдвинулось с мертвой точки. Вот так фурычит c нормальными иконками: Код: plaintext 1. 2. 3. 4. 5. Правда не в VB(черный ободок) а в exe с манифестом, но это устраивает. Осталось выяснить, как строить зоопарк, и как получать lngIcon ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 16:06 |
|
||
|
Сложно ли напичкать ListView 32-битными картинками?
|
|||
|---|---|---|---|
|
#18+
Ну...получается но ето работы конечно...и что паршиво надо делать всякий раз Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Т.е.иконки предварительно надо ложить 256-цветов (рыба) Но оно при этом в vb-ide не показывается, только в exe будет работать А после компиляции exe-шника менять их на альфа-32бит аналоги тупо вручную через ICOFx напр. Тогда будет работать. При этом надо б иметь хоть какой дублирующий код для IDE чтоб хотяб видеть чего будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:05 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36612899&tid=2159835]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 377ms |

| 0 / 0 |
