Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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, а пока
    затор. 

Автор: Coocky 26.6.2006, 14:33
Цитата(torero @  24.6.2006,  12:42 Найти цитируемый пост)
OnInitialUpdate() коды после того,
  как вывел списки:

   CClientDC dc(this);
   dc.MoveTo(200,10); dc.LineTo(200,200); 

Ну и что мы делаем? Перед показом окна создаем контекст клиентской области. Рисуем. Уничтожаем. А затем показывает окно, со СВОЕЙ прорисовкой. Которая все стирает smile 
Цитата

Когда пойму в чём ошибка, тогда переведу весь вывод в OnDraw, а пока
    затор.

 

Автор: Earnest 26.6.2006, 17:42
Не попадешь в OnDraw, потому, что он не вызывается. Это же стандартный контрол, поэтому все рисует API. Используй механизм CUSTOMDRAW, это позволит дополнить стандартную отрисовку. Набери в индексе MSDN NM_CUSTOMDRAW, посмотри раздел для ListView. Сначала может показаться сложным, но на деле там все просто. 

Автор: torero 28.6.2006, 14:23
   Всё посмотрел, понял в каком направлении двигаться. На практическую
  реализацию, конечно, нужно время.
   Большое спасибо. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)