Ноу Інти, лекція, меню в додатках mfc
Анотація: Стилі меню. Меню як ресурс. Додавання ресурсу меню. Прив'язка ресурсу меню до ресурсу головного вікна. Прив'язка до меню функціональних можливостей. Створення діалогу AboutBox. Створення макета в діалоговому вікні About. Створення керуючого класу. Динамічні меню. Створення контекстних меню. Побудова областей чутливості. Налагоджувальний обробник повідомлення WM_CONTEXTMENU. Створення ресурсів-заготовок контекстних меню. Побудова комбінованого обробника. Командні клавіші - акселератори.
Файли до даної лабораторної роботи, Ви можете завантажити тут.
Мета роботи
- Створити меню для додатка
- Додати меню в головне діалогове вікно додатка
- Викликати функції програми з меню
- Створити контекстне (спливаюче) меню
- Створити комбінований обробник (вручну)
- Задати акселератори (прискорюють, гарячі клавіші) швидкого виклику опцій меню
Проектувальники комп'ютерних програм винайшли графічний інтерфейс користувача (GUI - Graphical User Interface), щоб полегшити взаємодію з комп'ютерними системами і додатками. Важливою частиною цього інтерфейсу є меню.
стилі меню
Хоча ніяких стандартів розробки меню не існує, розробниками додатків при проектуванні меню накопичено багатий досвід, що дозволяє полегшити роботу майбутнього користувача. Його необхідно дотримуватися, щоб не змушувати потенційного користувача нашого застосування терміново здобувати другу вищу тільки для того, щоб правильно скористатися виробленим дітищем.
Меню як ресурс
Різні складові додатків Windows. включаючи макет діалогового вікна, меню, панелі інструментів, зображення, текстові рядки, командні кнопки, керуючі елементи і т.д. розглядаються як ресурси. Проектувальник додатки на візуальному рівні вказує середовищі IDE вміст текстів, розміри, ідентифікатори ресурсів, типи ресурсів, а середовище в цей час заносить ці відомості в файл ресурсів на спеціальній мові - опису ресурсів. Ресурси - це як видимі фішки в казино замість поки ще невидимих грошей. У додатках ресурси перетворюються в об'єкти тільки після їх компіляції.
Однак зручніше використовувати комбінований підхід. заздалегідь створити необхідний набір ресурсів статичним способом, потім у міру необхідності довантажувати в працююче додаток той чи інший ресурс програмно, керуючи його складом за потрібне чином. В нашій лабораторній роботі технологію динамічного завантаження і програмного управління меню ми застосуємо нижче стосовно контекстним меню.
Створення заготовки додатки
- Створіть новий проект MFC App C ++ під назвою Menu на основі діалогу
Таблиця настройки майстри створення заготовки додатки
Замінимо іконку програми на будь-яку іншу за вибором. Для цього зробіть наступне:
Переконайтеся, також, в тому, що файл .ico оболонка скопіювала в каталог res проекту.
- Додайте до додатка одну кнопку Exit (Вихід) з ідентифікатором ресурсу IDC_EXIT і помістіть в її обробник замість традиційного OnOK () наступний код
Додавання ресурсу меню
Після того, як базова заготівля створена майстром, потрібно додати і налаштувати в неї меню.
- Відкрийте панель Resource View. виділіть верхній вузол дерева ресурсів, ідентичний імені проекту, в контекстному меню (або головному меню Project оболонки) виконайте опцію Add Resource (Додати ресурс)
- У діалоговому вікні Add Resource двічі клацніть по ресурсу Menu

В області редагування оболонки запуститься дизайнер ресурсу меню. Перше місце в меню підсвічується.

Пункти меню можна вводити відразу в підсвічується синім маркером область або спочатку активізувати поле редагування пункту. Горизонтальні роздільники (сепаратори) вставляються клавішею "мінус". По пунктах меню дизайнера можна пересуватися стрілками. При виході за межі крайніх пунктів автоматично створюється порожній шаблон нового пункту, який в остаточному варіанті не бере. Непотрібні пункти можна видалити клавішею Delete.
Дизайнер меню підтримується і головним меню оболонки і своїм контекстним меню. Відкати редагування дизайнер може не підтримувати деякі, тому якщо зробити деякий помилкове дію, то відновлювати первісний варіант потрібно вручну.
Дизайнер меню автоматично формує ідентифікатор ресурсу пункту меню по його назві. Ідентифікатори повинні складатися із символів підкреслення, цифр і букв латинського алфавіту. Якщо пункти меню вводити відразу російською, то ідентифікатори дизайнер буде генерувати з цифр, далеких від мнемонічного сенсу закріпленої за пунктом завдання. Тому можливі два варіанти:
- Відразу начорно привласнити пунктам назви по-англійськи для автоматичної генерації зрозумілих за змістом імен ідентифікаторів, а потім все переписати по-російськи. Тут слід врахувати, що автоматична генерація ідентифікатора пункту відбувається тільки один раз при першому заповненні назви пункту. При всі наступні зміни назви спочатку сгенерированное ім'я ідентифікатора автоматично вже не змінюється (ну й добре, змінимо вручну).
- Писати назви пунктів відразу по-російськи, потім редагувати ідентифікатори ресурсів цих пунктів. Редагувати ідентифікатори і назви пунктів після їх створення можна через панель Properties або прямо в дизайнера меню, включивши або вимкнувши режим Edit IDs (Редагувати ідентифікатори).
- Розробіть ресурс меню програми відповідно до таблиці
Схема ресурсу меню
Прив'язка ресурсу меню до ресурсу головного вікна
Щоб меню з'явилося, цей ресурс потрібно зв'язати з якимсь діалоговим вікном. Але оскільки зазвичай з усіх діалогових вікон тільки для головного створюють меню, то прив'яжемо меню до головного вікна (тим більше, що у нас все поки одне вікно і є, і то головне!).
- В панелі Resource View відкрийте дизайнер діалогових вікон для ресурсу IDD_MENU_DIALOG
- Виділіть тільки саму форму (нам потрібні тільки її властивості) і в панелі Properties у властивості Menu встановіть ідентифікатор IDR_MENU щойно створеного нами меню
- Відкрийте програму і переконайтеся, що меню з'явилося, розкривається, але нічого не робить