Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > CListCtrl


Автор: fanruten 18.6.2006, 11:30
Как создать CListCtrl с редактируемыми полями??? 

Автор: takedo 18.6.2006, 13:49
я тоже не знаю. Создал так:

Код

    m_lctrl.Create(LVS_REPORT |LVS_EDITLABELS | 
        WS_VISIBLE,rlist,this,10);
    m_lctrl.InsertColumn(0,_T("1"),LVCF_TEXT,30);
    m_lctrl.InsertColumn(1,_T("2"),LVCF_TEXT,120);
    m_lctrl.InsertColumn(2,_T("3"),LVCF_TEXT,120);

так вот выделяется и редактируется только поле 1!!!!! А все другие, видимо они дополнительные, ну ни в какую не хотят! Очень хочется иметь такое же примерно окно по возможностям как Watch  в визуале. Там любое поле можно выделить и подредактировать. Может нужно использовать другой класс??? 

Автор: fanruten 18.6.2006, 14:35
Разобрался.

Надо создать свой класс от ClistCtrl и предопределить действие пользователя допустим клик

В обработчике получаем item  SubItemHitTest  узнаем его расположение  GetSubItemRect
и отрисовывем CEdit; 

Автор: DeadSoul 18.6.2006, 17:08
fanruten, а стиль editlabes не проще ли было поставить? 

Автор: fanruten 18.6.2006, 17:12
Ставил LVS_EDITLABELS но он несохранял изменение значение и неработал с subitem 

Автор: takedo 18.6.2006, 17:43
DeadSoul, не проще.

fanruten, в функцию SubItemHitTest  передается LPLVHITTESTINFO, в которой надо задать pt - то есть координаты точки, где их взять? Иначе функция выдает и итем и субитем -1,-1! 

Автор: takedo 18.6.2006, 20:44
 в принципе всё описано в двух ссылках:
http://www.progz.ru/forum/viewtopic.php?t=10498&highlight=enter
http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&article=2256&spider_enabled= 

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