| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Ребятушки выручайте надо CSplitterWnd раскрасить |
| Автор: Torrero20 22.5.2006, 12:37 | ||||
| В общем в проге на Visual С++ главное окно разбито на 4 фрейма 3 мя сплиттерами (CSplitterWnd ) между этими фреймами остаються небольшие полоски вот их то и надо перекрасить.... Я его и так и эдак..... Создал дочерний класс, FillRect - ю весь Сплиттер в OnPaint e . Он конечно Эрэктиться ВоД коД создания сплиттера в OnCreateClient MainWindow:
А вот код раскраски в дочернем классе: (MySplitter производный от CSplitterWnd)
ПомогЫыте! Плз.... |
| Автор: Earnest 22.5.2006, 14:21 |
| Не надо переопределять OnPaint. Сначала хоть бы посмотрел на родную реализацию... Переопредели OnDrawSplitter (это виртуальная функция). Но сначала разберись в ней. Навскидку, тебе нужно сначала вызвать родную версию, а потом зарисовать серединку нужным цветом. Но не всегда, а только в тех случаях, когда управление попадает на последнюю строку "родной" версии. Т.е. не в случае splitBorder. |
| Автор: Torrero20 22.5.2006, 16:48 | ||
| Почти всё круто... покрасил splitBar - спасибо Если ставлю обрабатываться и splitBorder... все нормально если не начинаешь предвигать сплиттер. Вот тут то и начинаеться непонятная закраска почти всех фремов полностью. Такая же чушь и с OnPaint ом была всё красилось, но если передвинешь....приплыли :-) ! Может не правильно крашу воД коТ:
<< -- Вот так корректно не работает, в чём тута дело??? |
| Автор: Earnest 22.5.2006, 17:51 |
| Если splitBorder, то просто сразу return (без вызова базового метода). Именно там 3D рамки рисуются. Ну код-то посмотри как следует. Этот OnDrawSplitter из нескольких мест вызывается, иногда с довольно большими прямоугольниками. |
| Автор: Torrero20 23.5.2006, 13:57 |
| Пасибуськи большушие ! Всё помогло |