Здравствуйте!
Я никогда раньше не писал программы на С++ под MFC, но мне нужно сделать всего 2 вещи:
1)Скопировать из Edit Control'а IDC_EDIT1 текст в переменную x.
2)Преобразовать переменную типа Int в строку.
3)Добавить преобразованную переменную х в Listbox IDC_LIST1.
Кто знает как это сделать пожалуйста напишите. Заранее благодарен!
31.08.05 19:18: Перенесено модератором из 'C/C++' — Odi$$ey
Здравствуйте, CrazyButcher, Вы писали:
CB>Я никогда раньше не писал программы на С++ под MFC, но мне нужно сделать всего 2 вещи:
[ Формулировка задания такая, будто ты лабу сдаёшь. Хотя сегодня 31 августа.

]
CB>1)Скопировать из Edit Control'а IDC_EDIT1 текст в переменную x.
CB>2)Преобразовать переменную типа Int в строку.
CB>3)Добавить преобразованную переменную х в Listbox IDC_LIST1.
Переменная x — это таки целое или строка? Если целое, то зачем конвертировать туда и обратно?
Допустим, что целое.
Итак.
1. Создаёшь в классе диалога (на котором есть упомянутые контролы) переменные, привязанные к контролам
— int m_nEdit1 (он же x)
— CListBox m_lbxList1
Это проще всего сделать визардом в Студии. Class View — Add variable — дальше сам разберёшься, надеюсь.
(У меня под рукой нет VS2003, а в VC6 визард по-другому устроен, поэтому детальные инструкции дать не могу).
2. В том месте, где тебе нужно выполнить эти действия, пишешь
void CYourDialog::DoThisWork()
{
UpdateData(/*true*/); // скопировать данные из окна в переменные
// теперь m_nEdit1 содержит числовое значение
CString str; str.Format("%d", m_nEdit1); // перегоняем его в строку наиболее общим способом.
// Если применять подобные конструкции не позволяет религия (и правильно делает), изучай сишный itoa или boost::lexical_cast
m_lbxList1.AddString(str); // добавляем новую строку
// Возможно, тебе захочется сделать проверку - нет ли уже такой строки в списке?
// В простейшем случае, проверяй
if(m_lbxList1.FindStringExact(0,str)!=LB_ERR) MessageBox("This value already exists!");
// а вообще, это зависит от решаемой задачи
}
Удалено избыточное цитирование. — SchweinDeBurg
Здравствуйте, Кодт, Вы писали:
К>[ Формулировка задания такая, будто ты лабу сдаёшь. Хотя сегодня 31 августа.
]
На счет лабы угадал

А если серьёзно — сделал все как ты сказал, но в мою переменную Х данные не считываются. Похоже UpdateData как-то неправильно работает. Может в визарде категорию переменной поставить Value вместо Control?
Здравствуйте, CrazyButcher, Вы писали:
CB>На счет лабы угадал
CB>А если серьёзно — сделал все как ты сказал, но в мою переменную Х данные не считываются. Похоже UpdateData как-то неправильно работает. Может в визарде категорию переменной поставить Value вместо Control?
Если переменная, ассоциированная с Edit'ом — это Control, то как из неё ты читаешь? X.GetWindowText() или

?
А в моём примере это, очевидно, Value
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, CrazyButcher, Вы писали:
CB>>На счет лабы угадал
CB>>А если серьёзно — сделал все как ты сказал, но в мою переменную Х данные не считываются. Похоже UpdateData как-то неправильно работает. Может в визарде категорию переменной поставить Value вместо Control?
К>Если переменная, ассоциированная с Edit'ом — это Control, то как из неё ты читаешь? X.GetWindowText() или
?
К>А в моём примере это, очевидно, Value
После отладки понял в чем глюк. Конструкция CString str; str.Format("%d", EnterX); не работает. Переменная str выводит вместо значения переменной EnterX число вроде 571281276 и всегда одно и тоже.
Всё. Разобрался. Всё работает. Огромное спасибо за помощь! Теперь я здам программирование за прошлый год!