есть несколько полей ввода данных. после того как данные введены, они сохраняются в список. название каждого элемента списка отображается в ListBox. при двойном клике на строке ListBoxa, введенные ранее данные обновляют поля ввода.
и вот столкнулся со следующей проблемой. если написать обработку двойного клика вот так
void CFlatDlg::OnLbnDblclkList1()
{
CString temp;
if(m_List2.GetCurSel() != LB_ERR)
m_List2.GetText(m_List2.GetCurSel(), temp);
SetDlgItemText(IDC_EDIT6, temp);
// поиск выбранного пресета и обновление данных PressSheet
CFlatApp::Preset search_preset(temp);
std::list<CFlatApp::Preset>::iterator iter = CFlatApp::Preset::presets.begin();
iter = find(CFlatApp::Preset::presets.begin(), CFlatApp::Preset::presets.end(), search_preset);
if(iter != CFlatApp::Preset::presets.end()){
ps_width = iter->width;
ps_height = iter->height;
gutter_by_x = iter->x_gutter;
gutter_by_y = iter->y_gutter;
CString s;
s.Format("%.1f", ps_width);
CWnd::SetDlgItemText(IDC_EDIT1, s);
s.Format("%.1f", ps_height);
CWnd::SetDlgItemText(IDC_EDIT2, s);
s.Format("%.1f", gutter_by_x);
CWnd::SetDlgItemText(IDC_EDIT4, s);
s.Format("%.1f", gutter_by_y);
CWnd::SetDlgItemText(IDC_EDIT5, s);
}
}
то обновление происходит только в IDC_EDIT1, а в прочих полях выставляются нолики.
если сделать вот так
CString s;
ps_width = iter->width;
s.Format("%.1f", ps_width);
CWnd::SetDlgItemText(IDC_EDIT1, s);
ps_height = iter->height;
s.Format("%.1f", ps_height);
CWnd::SetDlgItemText(IDC_EDIT2, s);
gutter_by_x = iter->x_gutter;
s.Format("%.1f", gutter_by_x);
CWnd::SetDlgItemText(IDC_EDIT4, s);
gutter_by_y = iter->y_gutter;
s.Format("%.1f", gutter_by_y);
CWnd::SetDlgItemText(IDC_EDIT5, s);
- все получается как нужно - обновляются все поля требуемыми значениями.
почему?