Пример разработки простейшего приложения типа Windows Forms на языке C++ в MS Visual Studio
В данной теме рассмотрен пример создания приложения расчета площади треугольника по формуле Герона. Приложение реализовано в системе Microsoft Visual Studio как Windows Forms Application.
В работе описывается программирование события клика на кнопке. Также рассматриваются особенности взаимодействия программного кода с компонентами Label (метка), Button (кнопка), Edit (строка ввода).
Содержание
Поиск на других ресурсах:
Математическая постановка задачи
Заданы длины сторон треугольника a, b, c. Используя средства системы Microsoft Visual Studio разработать приложение, которое вычисляет площадь треугольника по формуле Герона. Приложение реализовать на языке C++ как Windows Forms Application.
Формула Герона для расчета площади треугольника:
где a, b, c – стороны треугольника; p – полупериметр, рассчитывается по формуле:
⇑
Выполнение
1. Запустить Microsoft Visual Studio. Создать проект.
Запустить MS Visual Studio. Создать проект как Windows Forms Application на базе шаблона Visual C++. Пример создания проекта типа Windows Forms Application в C++ и типы создаваемых файлов приведен здесь.
Сохранить файл, задать ему произвольное имя (например «MyApp01«).
В результате, будет создана главная форма приложения как изображено на рисунке 1.
По умолчанию, создается класс формы с именем Form1. Ему отвечает файл с именем «Form1.h» (рисунок 1). Для того, чтобы перейти в режим просмотра кода файла «Form1.h» существует три способа:
– команда View -> Code (рисунок 2);
– команда «View Code» из контекстного меню, которое вызывается кликом на названии файла Form1.h в утилите Solution Explorer (рисунок 3);
– клик на соответствующей кнопке (View Code или View Designer) в Solution Explorer (рисунок 4).
Рис. 1. Главная форма приложения
Рис. 2. Команда Code с меню View
Рис 3. Вызов режима просмотра кода из контекстного меню
Рис 4. Вызов режима просмотра кода из Solution Explorer
В результате перехода в режим просмотра, откроется окно с текстом файла «Form1.h«.
Рисунок 5. Исходный код модуля формы «Form1.h«
Таким образом можно переходить между режимами проектирования (Design) и редактирования исходного кода (Code) проекта.
Класс формы содержит:
– конструктор Form1();
– деструктор ~Form1();
– метод InitializeComponent(), в котором можно реализовать начальную инициализацию внутренних переменных.
⇑
2. Размещение компонент на форме.
Для работы программы нужно разместить соответствующие компоненты на форме. Чтобы размещать компоненты, нужно перейти в режим проектирования (Design) одним из вышеописанных способов.
Компоненты находятся на панели инструментов Toolbox (рисунок 6).
Рис. 6. Палитра инструментов Toolbox
В нашем случае размещаются следующие компоненты:
– три компонента типа Label (метка) (рисунок 7). Предназначены для вывода информационных сообщений «a = «, «b = «, «c = «. В результате создается три экземпляра (объекта) с именами label1, label2, label3;
– три компонента типа TextBox (строка ввода) – для ввода значений переменных a, b, c (рисунок 8). Создается три объекта с именами textBox1, textBox2, textBox3;
– один компонент типа Button (кнопка) (рисунок 9). Предназначен для реализации команды вычисления площади и вызова соответствующего обработчика события. Создается экземпляр с именем button1;
– один компонент типа Label (рисунок 10). Предназначен для вывода результата (площадь треугольника). Создается объект с именем label4.
После размещения компонент форма будет иметь вид как показано на рисунке 10.
⇑
3. Настройка свойств компонент.
Чтобы форма имела более наглядный для решения задачи вид, нужно настроить ее свойства а также свойства компонент размещенных на ней.
Для настройки свойств формы и компонент используется окно «Properties» (рисунок 11). Это окно вызывается командой
View->Properties Window
или клавишей F4.
Рис. 11. Окно «Properties» настройки свойств компонент
Для изменения названия формы (программы), нужно ее предварительно выделить (мышкой). После этого в заголовке окна «Properties» может появиться название формы Form1. Следующим шагом нужно свойство Text установить в значение «Площадь треугольника» (рисунок 12).
Рис. 12. Настройка заголовка главной формы программы
Подобным образом настраиваются свойства компонент, размещенных на форме. Настроить такие свойства компонент:
– в компоненте label1 свойство Text = «a = «;
– в компоненте label2 свойство Text = «b = «;
– в компоненте label3 свойство Text = «c = «;
– в компоненте label4 свойство Text = «Площадь треугольника = «;
– в компоненте button1 свойство Text = «Вычислить«.
После выполненных действий, форма будет иметь вид, как изображено на рисунке 13.
Рис. 13. Вид формы после настройки компонент
⇑
4. Программирование события клика на кнопке button1.
Результатом работы программы есть вычисление площади треугольника. Вычисление происходит в момент когда пользователь делает клик на кнопке «Вычислить«. В результате формируется событие Click. В программе этому событию отвечает фрагмент программного кода, который называется обработчиком события (event handler). Этот фрагмент формируется средствами Microsoft Visual Studio.
Для того чтобы вызвать обработчик события клика на кнопке button1, нужно выполнить следующие действия (рисунок 14):
– выделить компонент button1;
– в окне Properties активировать вкладку «Events» (события);
– в списке событий, в поле ввода события Click сделать двойной клик мышкой.
Рис. 14. Вызов обработчика события Click клика на кнопке button1
В результате выполненных действий, система Microsoft Visual Studio сформирует обработчик события и переключит окно в режим ввода программного кода.
Обработчик события (метод) имеет название button1_Click. Формируется следующий программный код:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { }
Между фигурными скобками нужно вписать собственный код вычисления площади треугольника по формуле Герона.
Листинг программного кода обработчика события button1_Click() следующий:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { float a, b, c, p, s, t; a = System::Double::Parse(this->textBox1->Text); b = System::Double::Parse(this->textBox2->Text); c = c.Parse(this->textBox3->Text); p = (a + b + c)/2; t = p * (p-a) * (p-b) * (p-c); if (t<0) label4->Text = "Ошибка ввода данных!"; else { s = (float)Math::Sqrt(t); label4->Text = s.ToString(); } }
Объясним некоторые фрагменты кода.
Чтобы перевести значение компонента textBox1->Text из строки в соответствующей вещественный тип float используется метод Parse() из класса System::Double.
Чтобы занести в переменную a типа float значение строки с textBox1->Text можно использовать один из двух способов:
a = System::Double::Parse(this->textBox1->Text);
или
a = a.Parse(this->textBox1->Text);
Указатель this есть указателем на данный класс (класс Form1).
Для вычисления квадратного корня используется функция Sqrt() из класса Math:
s = (float)Math::Sqrt(t);
Для преобразования из типа float в строчный (string) используется метод ToString():
label4->Text = s.ToString();
⇑
5. Запуск проекта на выполнение.
Теперь можно запускать проект на выполнение (клавиша F5) и тестировать его работу.