Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2011, 16:20   #1
juky88
 
Регистрация: 17.04.2011
Сообщений: 4
Вопрос List Control. Ввод данных с клавиатуры

Есть задача: вводим числа с клавиатуры, присваиваем им с помощью combobox определенное свойств (типа да/нет). Ввод чисел не ограничен, т.е пользователь может ввести сколько угодно чисел и рядом с каждым числом должен появляться combobox.

Как вариант можно использовать list control:
Код:
BEGIN_MESSAGE_MAP(CMPDDlg, CDialog)
...
	ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST2, &CMPDDlg::OnLvnEndlabeleditParamProb)//редактирование
	ON_NOTIFY(LVN_BEGINLABELEDIT, IDC_LIST2, &CMPDDlg::OnLvnBeginlabeleditParamProb)
...
END_MESSAGE_MAP()

BOOL CMPDDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
...
//CListCtrl lc_paramProb;
lc_paramProb.SetExtendedStyle (LVS_REPORT| LVS_EX_CHECKBOXES|  LVS_OWNERDATA| LVS_EDITLABELS);
lc_paramProb.InsertColumn(0, _T("(Пакет) Вероятность ошибки"),LVCFMT_LEFT, 180, -1);
int Index=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;
	CString field;
	// пользователь отменил ввод
	if (item.pszText == NULL)
	{
		*pResult = 0; // "0" информирует систему о неуспешном вводе
		return;
	}

	// пользователь произвёл ввод, надо обновить наши данные
	field = item.pszText;
	
	*pResult = 1; // "1" информирует систему об успешном вводе
}

void CMPDDlg::OnLvnBeginlabeleditParamProb(NMHDR *pNMHDR, LRESULT *pResult)
{
	NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
	
	*pResult = 0;
}
Как правильно использовать list control не знаю. Обязательно ли использовать функции OnLvnEndlabeleditParamProb() и OnLvnBeginlabeleditParamProb() вместе и для чего тогда вторая функция?

У меня данные с клавиатуры вводятся, но по нажатию enter сразу пропадают и combobox не появляется.

Подскажите, пожалуйста, как правильно использовать list control в данном случае? и стоит ли использовать именно его, может есть другие варианты?

Последний раз редактировалось Stilet; 01.05.2011 в 17:37.
juky88 вне форума Ответить с цитированием
Старый 01.05.2011, 18:51   #2
juky88
 
Регистрация: 17.04.2011
Сообщений: 4
Хорошо ПроблеМКА устранена !!

Числа вводятся, комбобоксы появляются, но тормозит немного. Поясню: пытаюсь установить курсор в строку для ввода, но сам курсор появляется только после второго однократного нажатия и то НЕ СРАЗУ.
juky88 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ввод с клавиатуры Акоб Общие вопросы C/C++ 2 22.02.2011 18:00
Ввод данных с клавиатуры (Eclipse) k0tone Помощь студентам 0 28.01.2011 21:38
Assembler - ввод данных (имени и фамилии) с клавиатуры и вывод на экран МартинИ Помощь студентам 1 25.05.2010 00:40
ввод данных с клавиатуры juden Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.05.2008 18:05