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

2.2. Створення контекстного меню

Контекстне меню створеного додатку буде дублювати пункти меню «Data» головного меню. Щоб створити контекстне меню, необхідно на вкладці ResourceView у списку ресурсів натиснути правою кнопкою миші на папці Menu, вибрати команду Insert Menu і задати ідентифікатор для меню, наприклад, IDR_POPUP_MENU. Як вже зазначалося вище, всі пункти контекстного меню будуть дублювати відповідні пункти випадаючого меню, тому створюємо їх аналогічними до пунктів меню «Data». Створене меню має такий вигляд (рис.2.9):

Рис.2.9 - Контекстне меню

2.3. Визначення функцій-обробників повідомлень системи меню

Для того, щоб головне та контекстне меню функціонували, потрібно визначити функції-обробники для кожного створеного пункту меню. Для цього потрібно виконати команду ViewClassWizard. За допомогою цього майстра потрібно додати функцію-обробник для кожного пункту меню. У полі Project потрібно вибрати свій проект, у полі Class name – клас CCourseDoc (у цей клас будуть додаватися функції-обробники), у полі Object IDs – ідентифікатори пунктів меню. Наприклад, щоб додати функцію-обробник для пункту меню «Сотрудники», у полі Object IDs потрібно вибрати ідентифікатор ID_DATA_EMPLOYEE, у полі Messages – COMMAND (пункти меню генерують команди) і натиснути кнопку Add Function (рис.2.10):

Рис.2.10 - Вікно майстра MFC ClassWizard з доданими функціями-обробниками

Для інших пунктів меню функції-обробники додаються аналогічно, тільки для пунктів меню «Шрифт» та «Цвет фона» у полі Class name обираємо клас CCourseView (саме цей клас буде обробляти повідомлення). Таким же чином додається функція-обробник повідомлення WM_CONTEXTMENU для відкривання контекстного меню при натисканні правої кнопки миші у робочій області додатку. Зверніть увагу, що у полі Object IDs показано не ідентифікатор команди меню, а ім’я класу представлення (рис.2.11):

Рис.2.11 - Додавання функції-обробника повідомлення WM_CONTEXTMENU

2.4.Перевірка працездатності меню«Data»

Щоб пункти меню «Data» візуально працювали, як перемикач, у класі документу потрібно створити функцію, яка б малювала крапку біля вибраного пункту меню. Прототип цієї функції може бути наступним:

void setMenuRadio(UINT nItem);

Для цього потрібно клацнути правою кнопкою миші на імені класу CCourseDoc у вікні Workspace, і в контекстному меню вибрати пункт Add Member Function. При цьому з’явиться однойменне вікно, поля якого потрібно заповнити наступним чином (рис.2.12):

Рис.2.12 – Оголошення функції setMenuRadio

Після цього до оголошення класу буде додано прототип функції, а у файл реалізації класу – порожню реалізацію функції. Її потрібно змінити наступним чином:

void CCourseDoc::setMenuRadio(UINT nItem)

{

CMenu* pMenu = AfxGetMainWnd()->GetMenu();

pMenu->CheckMenuRadioItem(ID_DATA_EMPLOYEE,

ID_DATA_PROVIDERS,nItem,MF_BYCOMMAND);

}

Оскільки запити ще не працюють на даному етапі розроблення додатку, у функціях OnDataEmployee( ), OnDataProviders( ) та OnDataClients( ) класу CCourseDoc додамо код, який буде повідомляти про те, що запити ще не реалізовано, і виставляти крапку біля вибраного пункту меню (рис.2.13, 2.14), наприклад, для OnDataEmployee:

void CCourseDoc::OnDataEmployee()

{

// TODO: Add your command handler code here

MessageBox(NULL,"OnDataEmployee not yet implemented",

"Document", MB_OK);

setMenuRadio(ID_DATA_EMPLOYEE);

}

Для інших функцій код буде аналогічним.

Рис.2.13 - Вікно повідомлення

Рис.2.14 – Вигляд меню додатку

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]