Шаг 278 - Класс CListBox, текст выбранного элемента GetItemDataPtr()

Пора бы уже научиться получать данные из нашего списка. Сделаем в прошлом проекте пункт меню 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.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.