Пора бы уже научиться получать данные из нашего списка. Сделаем в прошлом проекте пункт меню GETITEM и к нему обработчик выбора с помощью ClassWizard:
void CTestListDlg::OnTestGetitem() { }
Мы с Вами не сможем получить текст с помощью функции GetText(), посмотрите сами. Поэтому мы в коде по вызову меню вызовем свою функцию из нашего класса CTestList. Вот так, проверив, что выбор сделан.
void CTestListDlg::OnTestGetitem() { int i; i=m_List.GetCurSel(); if (i!=LB_ERR) AfxMessageBox(m_List.GetSelectedString()); else AfxMessageBox("Selected item"); }
Давайте посмотрим, что внутри этой нашей функции GetSelectedString():
CString CTestList::GetSelectedString() { LPSTR lp=(LPSTR)GetItemDataPtr(GetCurSel()); return lp; }
Идея простая мы можем получить указатель на наши данные с помощью функции GetItemDataPtr().
void* GetItemDataPtr ( int nIndex // индекс элемента ) const;
Она возвращает указатель на данные по индексу, если произойдет ошибка, то вернет -1.