• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Редактирование Clistview

  • Автор темы GOGA
  • Дата начала
G

GOGA

Здравствуйте, уважаемые господа программисты!!!

Хочу проконсультироваться и найти свою ошибку. Я программно создаю элемент типа CMyListView, который я унаследовал от CListView с флагами:


Код:
GetListCtrl().ModifyStyle( 0, LVS_REPORT | LVS_EDITLABELS);
GetListCtrl().SetExtendedStyle(LVS_EX_FLATSB | 
LVS_EX_FULLROWSELECT | 
LVS_EX_HEADERDRAGDROP | 
LVS_EX_GRIDLINES | 
GetListCtrl().GetExtendedStyle() );


После чего создаю обработчик для завершения редактирования:

Код:
...
BEGIN_MESSAGE_MAP(CMyListView, CListView)
...
ON_NOTIFY_REFLECT(LVN_ENDLABELEDIT, OnEditLabelTab)
...
END_MESSAGE_MAP()
...

// И сам обработчик:
...
void CMyListView::OnEditLabelTab(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
CString sEdit = pDispInfo->item.pszText;
if(!sEdit.IsEmpty())
GetListCtrl().SetItemText(pDispInfo->item.iItem, m_nEdit, sEdit);

m_nEdit = -1;
GetListCtrl().SetItemState(pDispInfo->item.iItem, 0, LVNI_FOCUSED | LVNI_SELECTED);
*pResult = 0;
}
...


Только вот когда я вывожу информацию в таблицу и щелкаю левой кнопкой мыши на какой-нибудь ячейке, то доступной для редактирования стает всегда ячейка из первой колонки выбранной строки. А мне нужно, чтобы становилась доступной та ячейка, на которую я непосредственно щелкнул мышкой.

Подскажите, можно ли так сделать, если можно то как?

Заранее, СПАСИБО!
 
M

Maxx

сдается мне, надо самому рисовать этот элемент
создавать его со стилем LVS_OWNERDRAWFIXED, перехватывать нажатие мыши, создавать edit control со стилем ES_WANTRETURN (чтобы ентер ловить)
 
G

GOGA

Спасибо за совет, уже со всем разобрался! Теперь могу все что угодно делать с CListCtrl! :D Могу поделиться опытом, если кого интерисует!
 
S

Skyler

Спасибо за совет, уже со всем разобрался! Теперь могу все что угодно делать с CListCtrl! Могу поделиться опытом, если кого интерисует!
Привет! Стою сейчас перед аналогичной пороблемой: нужно редактировать значение ячеек во втором столбце и заность их в CList или в масив. Накопал тут, что нужно применять флаг LVS_EDITLABELS и обрабатывать уведомляющее сообщение LVN_ENDLABELEDIT, но тоже не знаю как <_< Помогите, кто-нибудь
 
S

Skyler

Большое-большое спасибо! Вроде разобрался... :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!