Как вариант можно использовать list control:
Код: Выделить всё
BEGIN_MESSAGE_MAP(CMPDDlg, CDialog)
...
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST2, &CMPDDlg::OnLvnEndlabeleditParamPro b)//редактирование
ON_NOTIFY(LVN_BEGINLABELEDIT, IDC_LIST2, &CMPDDlg::OnLvnBeginlabeleditParamP rob)
...
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*>(pNM HDR);
LVITEM item = pDispInfo->item;
CString field;
// пользователь отменил ввод
if (item.pszText == NULL)
{
*pResult = 0; // "0" информирует систему о неуспешном вводе
return;
}
// пользователь произвёл ввод, надо обновить наши данные
field = item.pszText;
*pResult = 1; // "1" информирует систему об успешном вводе
}
void CMPDDlg::OnLvnBeginlabeleditParamPr ob(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNM HDR);
*pResult = 0;
}
У меня данные с клавиатуры вводятся, но по нажатию enter сразу пропадают и combobox не появляется.
Подскажите, пожалуйста, как правильно использовать list control в данном случае? и стоит ли использовать именно его, может есть другие варианты?