Get Index of Item Text in MFC CListCtrl

user2675121 picture user2675121 · Nov 5, 2013 · Viewed 8.5k times · Source

I've got a CString with a Text that also is an Item Text of my CListCtrl. For example:

CString m_SearchThisItemText = _T("Banana");

And in my CListCtrl

m_List.SetItemText (1, 1, _T ("Banana"));

Now I want to find out, on which Index the Text is.

CListCtrl::FindItem doesnt work. It only searches the name of the Item, not the Text.

I also tried this

for (Index= 0; dlg.GetSearchContentText () == m_List.GetItemText (Index, Spalte); Index++)// HIER IST NOCH EIN FEHLER.
{
    if (dlg.GetSearchContentText () == m_List.GetItemText(Index, Spalte))
    {
        m_List.SetItemState (Zeile, LVIS_SELECTED, LVIS_SELECTED); 
        m_List.SetFocus();
    }
}

But it doesnt work. It stops at Index 0

Can anyone help me, how to find out on which Item the text is.

I hope you understand my question.

Answer

Roger Rowland picture Roger Rowland · Nov 5, 2013

Iterate all the items and search in the column you want:

int nCol = 1;    // to search in the second column (like your question)
CString m_SearchThisItemText = _T("Banana");

for (int i = 0; i < m_List.GetItemCount(); ++i)
{
    CString szText = m_List.GetItemText(i, nCol);
    if (szText == m_SearchThisItemText)
    {
        // found it - do something
        break;
    }
}