Шаг 11.
Microsoft Visual C++ 2010. Начала.
Первый проект. Функция обработки события

    На этом шаге мы рассмотрим алгоритм создания такой функции.

    Реакцией на событие должно быть какое-либо действие. В Visual C++ реакция на событие реализуется как функция обработки события. Таким образом, для того чтобы программа в ответ на действия пользователя выполняла некоторую работу, программист должен написать функцию обработки соответствующего события.

    Процесс создания функции обработки события рассмотрим на примере обработки события Click для кнопки Расчет.

    Чтобы создать функцию обработки события, сначала надо выбрать компонент, для которого создается функция обработки события. Для этого в окне конструктора формы надо сделать щелчок левой кнопкой мыши на нужном компоненте. Затем в окне Properties (Свойства) щелчком на кнопке Events (рисунок 1) нужно открыть вкладку Events (События).


Рис.1. Кнопка Events

    В левой колонке вкладки Events (События) (рисунок 2) перечислены события, которые может воспринимать выбранный компонент.


Рис.2. На вкладке Events перечислены события, которые может воспринимать компонент

    Строго говоря, на вкладке Events (События) указаны не события, а свойства, значением которых являются имена функций обработки соответствующих событий.

    Для того чтобы создать функцию обработки события, нужно на вкладке Events (События) выбрать событие (сделать щелчок мышью на имени события), в поле значения свойства ввести имя функции обработки события (рисунок 3) и нажать клавишу Enter.


Рис.3. Рядом с именем события надо ввести имя процедуры обработки события

    В результате этих действий в модуль формы (h-файл) будет добавлена функция обработки события и станет доступным окно редактора кода (рисунок 4), в котором можно набирать инструкции, реализующие функцию обработки события.


Рис.4. Шаблон процедуры обработки события

    Ниже приведена функция обработки события Click для кнопки Расчет.

  private: System::Void button1_Click (System::Object^  
                                     sender, System::EventArgs^  e) {
    double sum; // сумма
    int period; // срок
    double percent; // процентная ставка
    double profit; // доход

    sum = System::Convert::ToDouble(textBox1->Text);
    period = System::Convert::ToInt32(textBox2->Text);

    if (sum < 10000)
       percent = 8.5;
    else
       percent = 12;
    profit = sum * (percent/100/12) * period;
    label3->Text =
       "Процентная ставка: " + percent.ToString("n") + "%\n" +
      "Доход:" + profit.ToString("c");
}


Рис.5. Функция Void button1_Click

    Функция button1_Click вычисляет доход по вкладу и выводит результат в поле компонента label3. Исходные данные (сумма и срок вклада) вводятся из полей редактирования textBox1 и textBox2 путем обращения к свойству Text. Значением свойства Text является строка, которая находится в поле редактирования. Свойство Text строкового типа, поэтому для преобразования строк в числа используются принадлежащие пространству имен System::Convert функции ToDouble и ToInt32. Следует обратить внимание, что функция ToDouble возвращает результат только в том случае, если строка, переданная ей в качестве параметра, является изображением дробного числа, что предполагает использование запятой в качестве десятичного разделителя (при стандартной для России настройке операционной системы). Параметр функции ToInt32 должен быть изображением целого числа. Другие функции преобразования строк приведены в таблице 1.

Таблица 1. Функции преобразования строк
Функция Значение
ToSingle(s),
ToDouble
Дробное типа Single, Double
ToByte(s),
ToInt16(s),
ToInt32(s),
ToInt64(s)
Целое типа Byte, Int16, Int32, Int64
ToUInt16(s),
ToUInt32(s),
ToUInt64(s)
Целое типа UInt16, UInt32, UInt64

    Вычисленные значения процентной ставки и величины дохода выводятся в поле label3 путем присваивания значения свойству Text. Для преобразования дробного числа в строку (свойство Text строкового типа) используется функция (метод) ToString. Параметр метода ToString задает формат строки-результата:

    Следует обратить внимание, при использовании финансового формата после числового значения выводится обозначение денежной единицы (в соответствии с настройкой операционной системы). В таблице 2 приведены возможные форматы представления числовой информации.

Таблица 2. Форматы представления чисел
Параметр функции ToString Формат Пример
c, C Currency - финансовый (денежный). Используется для представления денежных величин. Обозначение денежной единицы, разделитель групп разрядов, способ отображения отрицательных чисел определяют соответствующие настройки операционной системы 55 055,28 р.
e, E Scientific (exponential) - научный. Используется для представления очень маленьких или очень больших чисел. Разделитель целой и дробной частей числа задается в настройках операционной системы 5,50528+E004
f, F Fixed - число с фиксированной точкой. Используется для представления дробных чисел. Количество цифр дробной части, способ отображения отрицательных чисел определяют соответствующие настройки операционной системы 55 055,28
n, N Number - числовой. Используется для представления дробных чисел. Количество цифр дробной части, символ-разделитель групп разрядов, способ отображения отрицательных чисел определяют соответствующие настройки операционной системы 55 055,28
g, G General - универсальный формат. Похож на Number, но разряды не разделены на группы 55 055,275
r, R Roundtrip - без округления. В отличие от формата N, этот формат не выполняет округления (количество цифр дробной части зависит от значения числа) 55 055,2775

    На следующем шаге мы поговорим о пространстве имен.




Предыдущий шаг Содержание Следующий шаг