Работа с List Box в Visual C++

Программисту часто приходиться пользоваться итерационными процессами, вне зависимости от того какой программой для написания кода он пользуется. Поэтому рассмотрим работу с циклами на примере решения следующей задачи.

Постановка задачи:

Переменная x меняется от xn до xk с шагом dx. Вывести таблицу значений x и y (y=esin(x)), вычислить сумму и произведение y.

Решение задачи:

Создадим диалоговое окно (мое имеет название ListBProg) и разместим на нем следующие компоненты:

  • 3 метки (Static Text);
  • 3 поля ввода (Edit Control);
  • 1 список (List Box);
  • 3 кнопки (Button).

Сделайте, чтобы имена и положение компонентов соответствовали скриншоту ниже.

List Box MFC

Добавим для полей ввода (Edit Control) переменные m_edit_xn, m_edit_xk, m_edit_dx, которые будут возвращать значение float. В функцию кнопки «Выход» впишем строку OnOK() для того чтобы программа завершала свою работу по нажатию соответствующей клавиши.

Изменим ID кнопок «Решить» и «Очистить» на ID_Solve и ID_Clear, а также добавим переменную m_Result для компонента List Box (рис. ниже).

Добавление переменной Visual C++

Установите в свойствах List Box значение «Сортировка» в false, так как иначе содержимое будет сортироваться по алфавиту, а «С полосой прокрутки» в true.

Зададим начальные значения полей ввода. Для этого откроем файл ListBProgDlg.cpp (либо свое название) и в функцию OnInitDialog перед оператором return впишем следующий код:

1
2
3
4
5
6
7
8
9
10
BOOL CListBProgDlg::OnInitDialog()
{

// TODO: добавьте дополнительную инициализацию
m_edit_xn=5;
m_edit_xk=4;
m_edit_dx=3;
UpdateData(FALSE);
return TRUE;
}

Осталось написать функции для работы с кнопками «Решить» и «Очистить».

Щелкаем по кнопке «Решить» и вводим следующий текст.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//подключите библиотеку math.h
void CListBProgDlg::OnBnClickedSolve()
{
int i; float x, xn, xk, dx, y, s, p;
CString S;
UpdateData(TRUE);
xn=m_edit_xn;
xk=m_edit_xk;
dx=m_edit_dx;
for (s=0, p=1, x=xn, i=0; x<=xk; x+=dx, i++)
{
y=exp(sin(x)); s+=y; p*=y;
S.Format (_T(«x=%g y=%g»),x,y);
m_Result.AddString(S);
S.Format(_T(«s=%g p=%g»), s, p);
m_Result.InsertString(0,S);
}
}

А для кнопки «Очистить» определите такой код:

1
2
3
4
5
6
7
void CListBProgDlg::OnBnClickedClear()
{
int j, n;
n=m_Result.GetCount();
for (j=0; j<n; j++)
m_Result.DeleteString(0);
}

Ну вот и все! Ваше приложение должно выглядеть во время работы примерно так:

Программа возвидения в степень - Kvodo.ru

Элемент List Box, также пригодиться для обработки массивов и других подобных задач. А отсюда Вы можете скачать исходники только что написанной нами программы.

Рейтинг
( Пока оценок нет )
Загрузка ...