Не могет быть...10.02.03 05:05 Число просмотров: 1051 Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 10.02.03 05:06 Количество правок: 1
> Стиль owner draw (он не только в дельфях так называется - в > винапи тоже) есть у Button-а (BS_OWNERDRAW) у Static-а > (SS_OWNREDRAW), у кучи других контролов, но у TreeView его > нет. В дельфях не смотрел - языками не владею :-))), но > если там есть этот стиль, то делфя использует не > стандартную comctl32, а расширяет сама. > > Можно попытаться просто перехватывать WM_PAINT (WM_NCPAINT) > и рисовать там самому, но по мойму отрисовывать TreeView - > то еще удовольствие
Я наверное не так выразился... Это не столь стиль TreeView, сколько любой TreeView шлёт NM_CUSTOMDRAW Notification Message. Вот на него и надо реагировать, там мощная поддержка в плане того, что надо отрисовывать винде самой для элемента TreeView, а что программеру. Прикол что в ссылке MSDN про подробности использования это Message (Using Custom Draw) они ссылаются на пример использования в ListView, т.е. однотипно. Ну, и наконец, Delphi юзает тот же механизм, я заглянул в sources.
---
Ну с нулевой иконой и с текстом все ясно - стандартные фичи. Но вот как нарисовать иконки справа от текста... Тут меня МС обломали :(, их три-вью - монолитное окно, так просто доступ к узлам дерева не получишь (вроде как можно было в Swing...). Вопрос - у кого-нибудь есть идеи, как можно разукрасить узлы дерева, подсунуть туда какой-нибудь битмап в бэкграунд и т.п.? То что в принципе возможно что-то такое сделать я знаю - в Qt QListView можно и дерево сделать и пихмапами его разукрасить, но проблема в том что Trolltech'и могли и сами это дерево реализовать от начала и до конца, с них станется...
Если кто работал с WTL - она позволяет такие фокусы делать? Я понимаю, что больше чем может Win32 API она не сделает, но вдруг там есть какой-то супер-макрос... :)
[Win32] Tree-view control может иметь стиль типа OwnerDraw (сорри за дельфийскую терминологию, но я уверен что и API позволит), там можно рисовать как угодно.08.02.03 15:50 Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 08.02.03 15:51 Количество правок: 1
Стиль owner draw (он не только в дельфях так называется - в винапи тоже) есть у Button-а (BS_OWNERDRAW) у Static-а (SS_OWNREDRAW), у кучи других контролов, но у TreeView его нет. В дельфях не смотрел - языками не владею :-))), но если там есть этот стиль, то делфя использует не стандартную comctl32, а расширяет сама.
Можно попытаться просто перехватывать WM_PAINT (WM_NCPAINT) и рисовать там самому, но по мойму отрисовывать TreeView - то еще удовольствие
Не могет быть...10.02.03 05:05 Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 10.02.03 05:06 Количество правок: 1
> Стиль owner draw (он не только в дельфях так называется - в > винапи тоже) есть у Button-а (BS_OWNERDRAW) у Static-а > (SS_OWNREDRAW), у кучи других контролов, но у TreeView его > нет. В дельфях не смотрел - языками не владею :-))), но > если там есть этот стиль, то делфя использует не > стандартную comctl32, а расширяет сама. > > Можно попытаться просто перехватывать WM_PAINT (WM_NCPAINT) > и рисовать там самому, но по мойму отрисовывать TreeView - > то еще удовольствие
Я наверное не так выразился... Это не столь стиль TreeView, сколько любой TreeView шлёт NM_CUSTOMDRAW Notification Message. Вот на него и надо реагировать, там мощная поддержка в плане того, что надо отрисовывать винде самой для элемента TreeView, а что программеру. Прикол что в ссылке MSDN про подробности использования это Message (Using Custom Draw) они ссылаются на пример использования в ListView, т.е. однотипно. Ну, и наконец, Delphi юзает тот же механизм, я заглянул в sources.
Thanx...10.02.03 19:34 Автор: tatar_0x4e Статус: Member
> Я наверное не так выразился... Это не столь стиль TreeView, > сколько любой TreeView шлёт NM_CUSTOMDRAW Notification > Message. Вот на него и надо реагировать, там мощная > поддержка в плане того, что надо отрисовывать винде самой > для элемента TreeView, а что программеру. Прикол что в > ссылке MSDN про подробности использования это Message > (Using Custom Draw) они ссылаются на пример использования в > ListView, т.е. однотипно. Ну, и наконец, Delphi юзает тот > же механизм, я заглянул в sources.
Да есть такое. Сейчас пробую прикрутить к своему случаю. Спасибо!
Ух ты!!! Бум знать - действительно то что надо :-)10.02.03 16:23 Автор: amirul <Serge> Статус: The Elderman