Автор
|
Тема: CListCtrl
|
mrwel |
опубликован 25-05-2001 13:15 MSK
Вот ! Есть у меня класс CMyList производный от CListCtrl ... Добавляю обработчик события: void CMyList::OnKeyUp(UINT nChar,UINT pCnt, UINT nFlags) { //тут пишу своё .. NMHDR pH; CWnd *pW = GetWindow(1); pH.hwndFrom = pW->m_hWnd; NMLISTVIEW *pL = (NMLISTVIEW *)&pH; CString srt = GetItemText(0,0); MessageBox(srt.GetBuffer(10)); // тут моё произведение кончается CListCtrl::OnKeyUp(nChar, nRepCnt, nFlags); } в этом случае да,я узнаю содержимое первой строки и первого столбца ... а вот как узнать на какой именно строке я отпустил клаву !? печаль мне !!!
|
Jimmy
|
опубликован 25-05-2001 15:31 MSK
Итак, нужно определить, какой итем "под фокусом". Алгоритм такой:Для каждого итема который selected делаем GetItem Этот гетитем возвращает структуру LVITEM, http://msdn.microsoft.com/library/psdk/shellcc/commctls/ListView/Structures/LVITEM.htm в которой есть поле UINT state. The stateMask member indicates the valid bits of this member state может быть равен LVIS_FOCUSED. Комент. такой: The item has the focus, so it is surrounded by a standard focus rectangle. Although more than one item may be selected, only one item can have the focus. OK? Да, и все это в твоем обработчике
|
Jimmy
|
опубликован 25-05-2001 15:33 MSK
>Для каждого итема который selected делаем... подробнее см. предыдущие реплаи luck
|
Jimmy
|
опубликован 25-05-2001 15:36 MSK
Зная focused item текст определить - уже не проблема.
|
foreverchild
|
опубликован 25-05-2001 16:33 MSK
Не думаю, что это делается так сложно. Это же элементарные вещи. Эх, ладно, доберусь домой не поленюсь и посмотрю в чем тут дело... |
Jimmy
|
опубликован 25-05-2001 16:45 MSK
2 foreverchild: А с чего это Вы, молодой человек, взяли, что это сложно? -) |
Jimmy
|
опубликован 25-05-2001 16:46 MSK
2 foreverchild: А с чего это Вы, молодой человек, взяли, что это сложно? -) foreverparent |