Страница 1 из 1

LVN_ENDLABELEDIT + вставляем новую строку

Добавлено: 02 май 2011, 14:46
juky88
LVN_ENDLABELEDIT уведомляет о конце редактирования. Только я не могу понять, какую запись он проверяет.
У меня такая проблемка:
Есть list control:

Код: Выделить всё

ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST2, &CMPDDlg::OnLvnEndlabeleditParamProb)

BOOL CMPDDlg::OnInitDialog()
{
...
lc_paramProb.InsertItem(LVIF_TEXT,0, _T(""),0,0,0,NULL);
...
}

void CMPDDlg::OnLvnEndlabeleditParamProb(NMHDR *pNMHDR, LRESULT *pResult)
{
	NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
	LVITEM item = pDispInfo->item;
	// пользователь отменил ввод
	if (item.pszText == NULL) {
		*pResult = 0; // "0" информирует систему о неуспешном вводе
		return;
	}
	if(lc_paramProb.GetItemText(lc_paramProb.GetItemCount()-1,0).Compare(_T("")) != 0){
		lc_paramProb.InsertItem(lc_paramProb.GetItemCount(),_T(""),0);
	} 
	*pResult = 1; // "1" информирует систему об успешном вводе
}
Новая строка вставляется после редактирования, что естественно, но мне надо, чтобы она вставлялась после ввода новой записи. Подскажите, пожалуйста, как это сделать?

Re: LVN_ENDLABELEDIT + вставляем новую строку

Добавлено: 04 май 2011, 22:06
Romeo
Что значит после ввода новой записи? Можешь вообще кинуть скриншот того, что получилось и набросок того, чего хотелось бы получить в идеале? У меня есть стойкое предчувствие, что ты делаешь неестественные вещи и того, к чему ты в итоге хочешь прийти можно добиться куда более логичными и правильными методами.

Re: LVN_ENDLABELEDIT + вставляем новую строку

Добавлено: 05 май 2011, 01:10
juky88
Вы абсолютно правы!! Два дня мучилась, пока изобретала велосипед, потом содрала готовый класс (наследованный от CListCtrl) и сделала с помощью него всё, что мне надо за 20 минут :confused: Зато сколько всего перечитала и нового узнала!!!
Тем не менее спасибо)