Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практична робота № 2.docx
Скачиваний:
3
Добавлен:
17.11.2019
Размер:
51.34 Кб
Скачать

2.2 Хід виконання роботи

2.2.1 Створення пробного додатку

Для наочної роботи з обробкою повідомлень і картами повідомлень заздалегідь необхідно створити простий діалоговий додаток. При створенні можна прибрати прапорець ActiveX Controls оскільки необхідності використовувати ActiveX об'єкти в даній практичній роботі немає, а програмний код стає простіше і наглядніше.

Після створення проекту відкриваємо файл з початковим кодом класу діалогового вікна і знаходимо початок карти повідомлень (макрос BEGIN MESSAGE MAP) (див. лістинг 2.1)

BEGIN MESSAGE MAP(CDialogAppDlg, CDialog)

//{{AFX MSG MAP(CDialogAppDlg)

ON WM SYSCOMMAND()

ON WM PAINT()

ON WM QUERYDRAGICON()

//}}AFX_MSG_MAP

END MESSAGE MAP()

Лістинг 2.1 - Автоматично створювана карта повідомлень діалогового додатку

2.2.2 Додавання деталей проекту, створення повідомлень

Тепер додамо на проект кнопку, клацнемо на ній правою кнопкою миші і виберемо пункт меню Events. З'явиться вікно додавання заголовків повідомлень і подій (див. Рис. 2.1).

Рис. 2.1 - Вікно додавання заголовків повідомлень і подій

В цьому вікні справа внизу знаходиться список класів і об'єктів, доступних для створення заголовків; зліва для кожного конкретного класу або об'єкту виводиться список доступних повідомлень або подій.

Вибираємо додану кнопку і для неї подія BN CLICKED - натиснення на кнопку. Після цього натискуємо на кнопку [Add and Edit] - виникне вікно створення функції-члена класу (див. Рис. 2.2), де можна змінити ім'я створюваної функції, яка буде викликатися при натисненні на кнопку.

Рис. 2.2 - Створення функції-члена класу

Після згоди з ім'ям функції автоматично відбудеться перехід до початкового коду програми в тому місці, де створена нова функція (див. лістинг 2.2)

void CDialogAppDlg::OnButton1()

{

// TODO: Add your control notification handler code here

}

Лістинг 2.2 - Нова функція обробки подій.

При додаванні нової функції обробки подій зміниться також карта обробки повідомлень, тепер вона буде виглядати наступним чином (див. лістинг 2.3).

BEGIN MESSAGE MAP(CDialogAppDlg, CDialog)

//{{AFX MSG MAP(CDialogAppDlg)

ON WM SYSCOMMAND()

ON WM PAINT()

ON WM QUERYDRAGICON()

ON BN CLICKED(IDC BUTTON1, OnButton1)

//}}AFX_MSG_MAP

END MESSAGE MAP()

Лістинг 2.3 - Карта повідомлень після додавання нової функції

Тепер в карті повідомлень з'явився макрос ON BN CLICKED, аргументами якого є системне ім'я кнопки і функція обробки, що викликається при натисненні на кнопку. Додайте в тіло створеної функції обробки строчку: MessageBox("You are clicked on BUTTON1","",MB OK);. Тепер при натисненні на кнопку буде з'являтися повідомлення (див. Рис. 2.3).

Рис. 2.3 - Створений додаток і повідомлення обробки події

Тепер створіть другу кнопку без створення для неї окремої функції обробки події натиснення і змінивши уручну карту повідомлень примусьте її виконувати ту ж функцію, що і перша (див. лістинг 2.4).

BEGIN MESSAGE MAP(CDialogAppDlg, CDialog)

//{{AFX MSG MAP(CDialogAppDlg)

ON WM SYSCOMMAND()

ON WM PAINT()

ON WM QUERYDRAGICON()

ON BN CLICKED(IDC BUTTON1, OnButton1)

ON BN CLICKED(IDC BUTTON2, OnButton1)

//}}AFX_MSG_MAP

END MESSAGE MAP()

Лістинг 2.4 - Змінена карта повідомлень