Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Treeview/Listview SetWindowTheme(hwndList, L"Explorer", NULL);
|
|||
|---|---|---|---|
|
#18+
Дмитрий77На Висте в некоторых программах (но далеко не всех) примеры: Почта Виндоус, Fax and Scan listview имеет какой-то другой вид, т.е. не только шапка по-вистовски, но и сами Items в Report выглядят по-вистовски, т.е. с закругленными выделениями-примечаниями и с голубой прозрачной подсветкой. Это как сделать? Или это вообще принципиально другой контрол? Собственно, как это сделать на других языках я нашел, например: http://www.codeproject.com/KB/vista/themedvistacontrols.aspx?msg=2780811 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Перевел, как смог, на VB6 (готовых примеров не накопал) Код: 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. Пока не фурычит. Предполагаю ошибки в Private Declare Function SetWindowTheme а также в константах Private Const TVS_EX_FADEINOUTEXPANDOS = &H40 '0x0040 Private Const TVS_EX_AUTOHSCROLL = &H20 '0x0020 Манифест естественно внедрен и испытания на Висте. Идеи будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 16:12 |
|
||
|
Treeview/Listview SetWindowTheme(hwndList, L"Explorer", NULL);
|
|||
|---|---|---|---|
|
#18+
Собственно надо (бы) вот так: http://www.vbforums.com/showthread.php?t=537725 Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 16:25 |
|
||
|
Treeview/Listview SetWindowTheme(hwndList, L"Explorer", NULL);
|
|||
|---|---|---|---|
|
#18+
Фу,...фу-фу-фу вот так прокатило. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 16:54 |
|
||
|
Treeview/Listview SetWindowTheme(hwndList, L"Explorer", NULL);
|
|||
|---|---|---|---|
|
#18+
Дима, ты в таких дебрях лазишь, хоть сбрось какую-то демку, что-бы полюбоватся, ради каких красот все эти изыскания :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 17:14 |
|
||
|
Treeview/Listview SetWindowTheme(hwndList, L"Explorer", NULL);
|
|||
|---|---|---|---|
|
#18+
Игорь, не обижайтесь, но не привык везде и всюду раскрывать все карты. На этом форуме я любитель VB6, на другом форуме я "специалист" по VOIP, например. В рамках данного сообщества стараюсь вести себя честно. В смысле стараюсь не хапать лишь, а также и отдавать. Т.е. если нашел решение сам (а в половине случаев оно так и получается), то найду минутку и опубликую результат. Если неправ, поправьте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 00:29 |
|
||
|
Treeview/Listview SetWindowTheme(hwndList, L"Explorer", NULL);
|
|||
|---|---|---|---|
|
#18+
Дмитрий, у меня не было никаких претензий, ты задаешь не тривиальные вопросы и как правило приходишь к какому-то решению и мне было интересно посмотреть на программу, которая включает в себя результат такого упорного труда. Но если нет, то нет и без всяких обид :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 09:53 |
|
||
|
Treeview/Listview SetWindowTheme(hwndList, L"Explorer", NULL);
|
|||
|---|---|---|---|
|
#18+
Но тестовым (уже рабочим) примером по теме поделюсь. Treeviw/Listview Но сразу задам вопрос. Все работает но есть проблема с ListView. 1) Если использовать LVS_EX_DOUBLEBUFFER (глюк виден на любой OS системе при запуске exe из-под манифеста, explorer стиль не причем). Делаем Form_resize или просто убираем форму на панель задач/восстанавливаем, headers в reportview не перересовываются, по ним надо пройтись мышкой, чтоб они снова нарисовались. 2) Если не использовать LVS_EX_DOUBLEBUFFER, особых минусов на Висте я не заметил, то с headers все нормально, но возникает другая проблема: при раздвижении столбцов не перерисовывается сам ListView, в нижней области где Items отсутствуют (веер из вертикальных разделителей столбцов). Это видно на Висте. Т.к. Microsoft настойчиво рекомендует использовать LVS_EX_DOUBLEBUFFER для explorer-стиля (якобы там чего-то мерцает меньше, я не заметил), то видимо надо копать проблему 1. Либо я что-то не допонял, либо... в большом проекте у меня ListView сабклассятся, можно попробовать перерисовывать hwnd(header). Но сабклассятся не все ListView, увлекаться сабклассингом бы не хотелось... Или наплевать на рекомендацию, убрать LVS_EX_DOUBLEBUFFER и перерисовывать сам ListView, но блин опять сабклассить, ибо как иначе отследить изменение ширины колонки. P.S. И опять мой вопрос. Как файлики то тут правильно прикладывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 16:30 |
|
||
|
Treeview/Listview SetWindowTheme(hwndList, L"Explorer", NULL);
|
|||
|---|---|---|---|
|
#18+
Дмитрий771) Если использовать LVS_EX_DOUBLEBUFFER (глюк виден на любой OS системе при запуске exe из-под манифеста, explorer стиль не причем). Делаем Form_resize или просто убираем форму на панель задач/восстанавливаем, headers в reportview не перересовываются, по ним надо пройтись мышкой, чтоб они снова нарисовались. Лекарство в общем-то несложное: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 1)попробовал при form_paint, помогает во многих случаях 2)потом понял что надо еще когда items добавляются 3)потом добавил еще в ColumnClick 4) потом понял что если есть HScroll, то при перемещении ползунка влево-вправо headers опять стираются. В принципе поборолся через WM_PAINT самого listview, но как-то не очень красиво и все это полумеры...не лечащие причину неперерисовки headers. Надо как-бы отрыть собаку, а не пытаться ее зарывать еще глубже, все равно при каких-то обстоятельствах завоняет. И потом если уж рассчитывать на сабклассинг, то хочу понять, на какое WM_ЧТО??? я должен рассчитывать чтобы понять что ListView сам обновился, и время сделать DrawHeaders() ибо злоупотребление перерисовкой потребляет ресурсы и нехорошо заметно. А что касается LVS_EX_DOUBLEBUFFER , то к стилю explorer он никакого отношения не имеет и его м.б. имеет смысл применять даже на XP на классике, ибо он сильно снижает мелькалку при перерисовке формы и обновлениях ListView. Но с этим глюком проще от него вообще отказаться и м.б. делать ListView.Refresh при раздвижении колонок, даже не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 22:57 |
|
||
|
Treeview/Listview SetWindowTheme(hwndList, L"Explorer", NULL);
|
|||
|---|---|---|---|
|
#18+
Дмитрий77И потом если уж рассчитывать на сабклассинг, то хочу понять, на какое WM_ЧТО??? я должен рассчитывать чтобы понять что ListView сам обновился Плохо проверял,у меня до этого сабклассились только header-ы, и я сдуру залепил перерисовку в WM_PAINT хидеров, все действительно лечится через WM_PAINT самого ListView. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Непонятно правда почему оно по-умолчанию так себя ведет. LVS_EX_DOUBLEBUFFER действительно лучше применять на всех OS. Один мелкий глюк пока вижу на Висте, если строка выделена то точечки фокуса(если клавиатура уже применялась) при form_resize (стиль explorer) немного смазываются при авто-перерисовке, но думаю на это можно пока забить или оставить на потом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 03:40 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36597420&tid=2159878]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 147ms |

| 0 / 0 |
