Основные элементы управления

Рассмотрим пример создания диалогового приложения с различными управляющими элементами (рис. 7.2.1).

 
 

Рис. 7.2.1. Диалоговое окно с примером

 

1. Создадим папку для хранения приложения.

2. Выполнить команду New/Project/MFC AppWizard (exe).

3. Введем в поле Project Name имя программы Prim и нажмем кнопку OK.

4. На первом шаге мастера выберем вариант создания диалогового приложения (Dialog based) и нажмем кнопку Next.

5. Последовательно пройдем все остальные шаги мастера (всего четыре шага) и нажмем кнопку Finish. Сформируется заготовка окна.

6. Удалим с формы текст TODO: Place dialog control here.

7. Выполним команду Properties контекстного меню элемента Prim resources/Dialog/IDD_Prim_Dialog и в поле Language выберем Russian.

8. В окне свойств формы зададим наименование формы Пример ис­поль­зования управляющих элементов (свойство Caption), размер и наименование соответствующего шрифта установим кнопкой Font.

9. Разместим элемент Static Text(Caption=Текстовое поле).

10. Разместим элемент Text Box(IDC_EDIT1).

11. Аналогично создадим заголовок (Счетчик) и поле IDC_EDIT2.

12. Разместим элемент Spin(IDC_SPIN1) рядом с полем IDC_EDIT2 и установим свойства: Alignment=Right (выравнивание справа), Auto buddy (автоматическое подключение связанного элемента, созданного перед счет­чиком (IDC_EDIT2)), Set buddy integer (целочисленное значение счетчика), Arrow Keys (изменение значения счетчика с помощью клавиш).

Изменим название кнопки Cancel на Отмена.

13. Разместим элемент Combo Box(IDC_COMBO1) под кнопками, щелкнем по кнопке раскрытия списка и перенесем вниз нижнюю часть. На странице Data свойства этого элемента введем (для перехода на следующую строку нажимаются клавиши ^Enter) три строки со значениями 5, 15, 300. Снимем флажок сортировки (Sort) и установим выравнивание текста справа (Right aligned text).

14. Разместим элемент Radio Button(IDC_RADIO1) со свойствами: Caption=Текстовое поле, Group.

15. Аналогично разместим элемент IDC_RADIO2 с надписью Счетчик, но без флажка Group.

16. Разместим снаружи радиокнопок элемент Group Box с надписью Выбор поля для сохранения.

17. Разместим поле CheckBoxс надписью Сохранять предыдущее значение.

18.

 
 

Выполним команду View/ClassWizard и раскроем страницу Mem­ber Variable(рис. 7.2.2). Выделим ресурс IDC_EDIT2, нажмем кнопку Add Variable и заполним окно с описанием переменной m_chethik (рис. 7.2.2).

Рис. 7.2.2. Страница переменных и окно добавления переменной

Аналогичным образом назначим переменные: m_cpicok для IDC_COM­BO1, m_edit1 для IDC_EDIT1, m_radio1 для IDC_RADIO1, m_check1 для IDC_CHECK1.

19. На странице Message Mapsвыделим объект IDC_RA­DIO1, сообщение BN_CLICKи нажмем кнопку Add Member Fuction (рис. 7.2.3); оставим без изменения имя функции, нажмем кнопку OK.

 
 

Рис. 7.2.3. Страница сообщений и окно добавления функции обработки сообщения

 

20. Аналогичным образом определим функции обработки сооб­ще­ний: UDN_DELTAPOS для ресурса IDC_SPIN1, BN_CLICED для IDC_RADIO2, CBN_SELENDOK для IDC_COMBO1.

21. Вставим в тело функций OnSelendokCombo1, OnRadio1, OnRadio2 вызов функции UpdateData() для обновления значений соот­ветству­ющих переменных путем вызова и выполнения функции DoDataExchange. В конце функции OnDeltaposSpin1 включим оператор pNMUpDown->iDelta=-pNMUpDown->iDelta для установления обще­при­ня­­­­того в Office изменения счетчика: стрелка вниз - уменьшение и вверх - уве­­­личение значения счетчика, а не наоборот, как это принято в Visual С.

22. Откорректируем следующие операторы функции (конструктора класса) CprimDlg, которые присваивают начальные значения элементам:

m_chethik = _T("5"); m_cpicok = _T("10"); m_edit1 = _T("15");

23. Приведем функцию DoDataExchange к следующему виду:

void CPrimDlg::DoDataExchange(CDataExchange* pDX)

{ CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDIT2, m_chethik); // m_chethik=IDC_EDIT2

DDV_MaxChars(pDX, m_chethik, 3); //длина значения m_chethik <=3

DDX_CBString(pDX, IDC_COMBO1, m_cpicok);

DDV_MaxChars(pDX, m_cpicok, 3); //длина значения m_cpicok <=3

DDX_Text(pDX, IDC_EDIT1, m_edit1); // m_edit1=IDC_EDIT1

DDX_Radio(pDX, IDC_RADIO1, m_radio1); // m_radio1=IDC_RADIO1

DDX_Check(pDX, IDC_CHECK1, m_check1); // m_check1=IDC_CHECK1

if (m_check1)

{ switch (m_radio1) //значения переменных->в управляющие элементы

{ case 0: SetDlgItemText(IDC_EDIT1,m_cpicok); break;

case 1: SetDlgItemText(IDC_EDIT2,m_cpicok);

}

}

}

24. Сохраним проект и нажмем кнопку Execute Program для выпол­не­ния программы.

Списки

Продолжим формирование предыдущего примера.

1. Разместим элементы List Box (IDC_LIST1), Edit Box (IDC_EDIT3), Button (IDC_Add, Добавить), Button (IDC_Delete, Добавить) и надписи (Static Text) Список, Элемент спис­ка (рис. 7.2.1).

2. Назначим переменные m_edit3 (для элемента IDC_EDIT3), m_list1 (категории Control для элемента IDC_LIST1).

3. Добавим функции OnAdd и OnDelete формирования сообщений BN_CLICKED (обработки щелчков мышки) для кнопок Добавить и Удалить и функцию OnDblclkList1 (обработка двойных щелчков мышки на поле со списком) формирования сообщения LBN_DBLCLK для IDC_LIST1.

4. Нажмем кнопку Edit Code и откорректируем.

void CPrimDlg::OnAdd() //обработка кнопки «Добавить»

{ UpdateData(); m_list1.AddString(m_edit3) //добавить строку в список

}

void CPrimDlg::OnDelete()//обработка кнопки «Удалить»

{ if (m_list1.GetCurSel()!=LB_ERR) //проверка выделенной строки в списке

m_list1.DeleteString(m_list1.GetCurSel()); //удалить выделенную строку

UpdateData(); //обновить объекты формы

}

void CPrimDlg::OnDblclkList1() //обработка двойного щелчка по списку

{ if (m_list1.GetCurSel()!=LB_ERR) //проверка выделенной строки в списке

{ CString r; //объявление строковой переменной

m_list1.GetText(m_list1.GetCurSel(),r); //r=выделенная строка списка

SetDlgItemText(IDC_EDIT3, r); //значение r помещается в поле EDIT3

}

}

5. Сохраним проект и нажмем кнопку выполнения Execute Program.








Дата добавления: 2016-03-22; просмотров: 631;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.018 сек.