Совместное использование флажков и переключателей при программировании на C++ стандарта ISO/ANSI (Лабораторная работа № 12 по VISUALC++ 2005)

Страницы работы

Содержание работы

Лабораторная работа №12 по VISUALC++ 2005

"Совместное использование флажков и переключателей при программировании на  C++ стандарта ISO/ANSI "

Составил доц. Авраменко В.В.

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

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

          Если пользователь выбирает другой тип букета, программа должна показать соответствующие данные уже для нового типа.

2 Общие указания

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

.

2.1 Последовательность действий при создании программы

1)  Start Page. Create:Project.
Выбрать тип проекта (Project Types) MFC, шаблон- MFC Application,
Name- flagswitches.

2)   В окне Application Type выбрать Dialog based. Снять флажок Use Unicode Libraries. Щёлкнуть на Finish.

3)  Выбрать вкладку Resource View (Просмотр ресурсов). Раскрыть папку Dialog . Дважды щелкнуть на IDD_FLAGSSWITCHES _DIALOG. Появится диалоговое окно.

4)  Из Toolbox разместить в окне два групповых поля Group Box и текстовое окно ab| Edit Control. У левого группового поля заменить подпись static на «Букет». Для этого выделить это поле, вызвать контекстное меню, выбрать properties. В поле caption ввести новую подпись и нажать enter. Соответственно правое групповое поле подписать «Квіти».

5)  Мы хотим, чтобы пользователь выбирал тип букета с помощью переключателя, а программа обозначала входящие в него цветы, устанавливая нужные флажки. Поэтому следует добавить в группу «Букет» четыре переключателя, а в группу «Квіти»- четыре флажка. Присвоить им соответствующие подписи, например, «Тип 1»,  «Тип 4», «Троянди», «Лілії» и т.п.Для этого, из Toolbox следует выбрать элемент Aa Static Text и разместить его справа от переключателя или флажка. В его properties в поле caption вместо static написать требуемую подпись. Выровнять по горизонтали и вертикали все управляющие элементы.

6)  В класс CflagsswitchesDlg необходимо добавить элемент данных, соответствующий текстовому окну. Для этого нужно выделить текстовое окно, вызвать контекстное меню и выбрать в нем Add Variable. Доступ сделать private. Тип CEdit уже установлен по умолчанию. Имя дадим m_edit1. То есть элементом данных класса CflagsswitchesDlg  является объект m_edit1 класса CEdit.

7)  Для каждого переключателя создать метод-обработчик (от OnBnClickedRadio1()  до OnBnClickedRadio4()).

8)  В класс CflagsswitchesDlg необходимо добавить элементы данных, соответствующиефлажкам. Для этого нужно выделить флажок, вызвать контекстное меню и выбрать в нем Add Variable. Доступ сделать private. Тип CButton уже установлен по умолчанию. Имена дадим отm_check1 до m_check4. То есть элементами  данных класса CflagsswitchesDlg  являются объекты m_check1 – m_check4 класса CButton.

9) Заполнить заготовки обработчиков. При этом возникает необходимость принудительной установки каждого из флажков в заданное состояние. Для этого служит метод класса CButton   SetCheck(параметр); . Если параметр  равен true, это означает что флажок выбирается и метится «галочкой». Параметр false –сброс флажка. Для каждого типа букета определены входящие в него цветы. Соответствующие им флажки будут помечены.  Если нужно узнать текущее состояние флажка, используется  метод GetCheck().

void CflagsswitchesDlg::OnBnClickedRadio1()

{

    m_check1.SetCheck(true);

    m_check2.SetCheck(true);

    m_check3.SetCheck(true);

    m_check4.SetCheck(true);

    m_edit1.SetWindowTextA("$6.86");

    UpdateData(false);

    // TODO: Add your control notification handler code here

}

void CflagsswitchesDlg::OnBnClickedRadio2()

{

    m_check1.SetCheck(true);

    m_check2.SetCheck(false);

    m_check3.SetCheck(true);

    m_check4.SetCheck(false);

    m_edit1.SetWindowTextA("$3.95");

    UpdateData(false);

    // TODO: Add your control notification handler code here

}

void CflagsswitchesDlg::OnBnClickedRadio3()

{

    m_check1.SetCheck(false);

    m_check2.SetCheck(true);

    m_check3.SetCheck(false);

    m_check4.SetCheck(true);

    m_edit1.SetWindowTextA("$2.75");

    UpdateData(false);

    // TODO: Add your control notification handler code here

}

void CflagsswitchesDlg::OnBnClickedRadio4()

{

    m_check1.SetCheck(false);

    m_check2.SetCheck(false);

    m_check3.SetCheck(false);

    m_check4.SetCheck(false);

    m_edit1.SetWindowTextA("$0.00");

    UpdateData(false);

    // TODO: Add your control notification handler code here

}

 Как видно из кода обработчиков, для букета типа №1 предусмотрено включить  в букет все  четыре названия цветов. А тип №4 – пустой букет. Поэтому все четыре флажка – сброшены.

Во всех  обработчиках используется локальная переменная CString str, которая инициализируется стоимостью букета и  затем выводится в текстовое окно.

    UpdateData(false);// Метод занесения в текстовое окно.

    // false означает, что происходит занесение в текстовое окно, а true- считывание из окна

8) Нажатием Ctrl+F5 запускаем программу.

3 Контрольные вопросы

Что такое групповое окно и зачем оно нужно?

2Как изменить подпись в групповом окне?

3 Как определить текущее состояние флажка и задать требуемое?

4Зачем нужно было вводить элементы данных  m_check1, m_edit1 и др.?

5 Зачем нужен метод UpdateData() ?

Список литературы

1 С. Холзнер Visual C++ 6 «Питер», Санкт-Петербург, Москва, Харьков, Минск, 2001г.

2 Айвор Хортон  VISUAL C++ 2005 Базовый курс, «Диалектика», Москва*Санкт-Петербург*Киев , 2007г.

Похожие материалы

Информация о работе

Тип:
Методические указания и пособия
Размер файла:
42 Kb
Скачали:
0