| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Графика в CListView |
| Автор: torero 24.6.2006, 12:42 |
| Хотел в проекте на базовом классе CListView провести вертикальную линию. Но стандартный подход ничего не дал. В OnInitialUpdate() коды после того, как вывел списки: CClientDC dc(this); dc.MoveTo(200,10); dc.LineTo(200,200); и никакой линии между колонками нет. Может быть нужен не (this), а другой указатель, но m_List из оператора CListCtrl &m_List=GetListCtrl(); - не проходит. |
| Автор: cozzzy 24.6.2006, 15:13 |
| Invalidate() ? |
| Автор: Bukmop 24.6.2006, 17:21 |
| Может проще добавить SetExtendedStyle(LVS_EX_GRIDLINES), а рисовать в OnInitialUpdate(), бессмысленно. |
| Автор: torero 26.6.2006, 14:26 |
| Спасибо за советы. 1. LVS_EX_GREADLINES- нет гибкости, чтобы проводить линии произвольно, а не всю решётку. 2. А с OnDraw у меня что-то непонятное. Когда был проект на базе CView, то каркас приложения обходил методы в "виде" так: конструктор-OnCreate-OnDraw. Сейчас же на базе CListView: конструктор-OnCreate-OnInitialUpdate , и не идёт в OnDraw, даже по Invalidate();, который стоит в конце OnInitialUpdate();. Когда пойму в чём ошибка, тогда переведу весь вывод в OnDraw, а пока затор. |
| Автор: Earnest 26.6.2006, 17:42 |
| Не попадешь в OnDraw, потому, что он не вызывается. Это же стандартный контрол, поэтому все рисует API. Используй механизм CUSTOMDRAW, это позволит дополнить стандартную отрисовку. Набери в индексе MSDN NM_CUSTOMDRAW, посмотри раздел для ListView. Сначала может показаться сложным, но на деле там все просто. |
| Автор: torero 28.6.2006, 14:23 |
| Всё посмотрел, понял в каком направлении двигаться. На практическую реализацию, конечно, нужно время. Большое спасибо. |