69268

Створення обробників подій меню

Лекция

Информатика, кибернетика и программирование

Після того, як ресурс меню буде створений, можна переходити до розробки коди, пов’язаної з подіями пунктів меню. Щоб побачити цей процес у дії, досить клацнути правою кнопкою миші на пункті меню ID_SPEAK_BEFORMAL і в контекстному меню, що з’явилося, вибрати пункт Add Event Handler...

Украинкский

2014-10-02

30.5 KB

0 чел.

Лекція № 10

Тема: Створення обробників подій меню

Після того, як ресурс меню буде створений, можна переходити до розробки коди, пов'язаної з подіями пунктів меню. Щоб побачити цей процес у дії, досить клацнути правою кнопкою миші на пункті меню ID_SPEAK_BEFORMAL і в контекстному меню, що з'явилося, вибрати пункт Add Event Handler (Додати обробник події) (мал. 4.5).

Перше, на що необхідно звернути увагу в цьому діалоговому вікні, — це поле Command name (Ім'я команди), в якому вказаний ідентифікатор пункту меню. Як можна буде відмітити незабаром, воно зіграє істотну роль при створенні коди. Тепер звернете увагу на список Message type (Тип повідомлення), де пропонується на вибір два типи повідомлень; COMMAND і UPDATE_COMMAND__UI.

Повідомлення типу WM_COMMAND передається при виборі користувачем пункту меню. Код обробника такого повідомлення виконуватиметься при кожному виборі користувачем даного пункту меню. Якщо MFC не зможе знайти відповідний обробник повідомлення типу WM_COMMAWD для даного пункту меню, то цей пункт меню буде автоматично заблокований і стане недоступний для користувача.

Повідомлення типу ON__UPDATE_COMMAND_UI не є повідомленням Windows, це швидше запит середовища виконання MFC на оновлення зовнішнього вигляду окремих пунктів меню. Обробники подій подібних повідомлень, іноді звані обробниками команд призначеного для користувача інтерфейсу (COMMANDUI handler), призначені для розміщення коди здатного виконувати такі дії, як розміщення прапорця поряд з пунктом меню, виділення його сірим кольором або блокування пункту меню. Ось невеликий приклад обробника команд призначеного для користувача інтерфейсу, який виконує подібні завдання на підставі значень змінних додатку.

void CMainFfame::OnUpdateCheckedMenuItem(CCmdUI* pCmdUI)

{

// Якщо g_bMenuCheeked в стані TRUE, то прапорець

// буде встановлений, а інакше знятий.

pCmdUI->SetCheck( g_bMenuChecked );

// Якщо g_bMenuEnable в стані TRUE, то пункт  

// доступний, а інакше виділений сірим.

pCmdUI->Enable( g bMenuEnable );

}

Як видно з цього фрагмента коди, обробникам команд призначеного для користувача інтерфейсу передається покажчик на об'єкт класу CCmdUI, виклик функцій-членів якого дозволяє управляти станом пунктів меню. Наприклад, щоб на підставі алгоритму додатку заблокувати пункт меню, досить викликати функцію CCmdUI:: Enable, передавши їй як аргумент значення FALSE.

Наступний елемент діалогового вікна майстра Event Handler Wizard, на якого має сенс звернути увагу, — це Class list (Список класів). Саме тут можна вказати середовищу розробки Visual Studio, в який з класів необхідно додати обробник події. Ето рішення повністю залежить від переваг розробника і від особливостей архітектури створюваного застосування. Проте, щоб насправді осмислено ухвалювати це рішення, необхідно мати уявлення про деякі особливості маршрутизації повідомлень MFC.

Адресатом більшості повідомлень, що обробляються а додатках MFC, є один тип об'єкту: вікно. Виходячи з моделі, використовуваною API Windows, і даного типу повідомленні, це, ймовірно, має сенс. Врешті-решт, такі повідомлення як WM__CREATE, WM_MOVE і HM_SIZE повідомляють вікно про необхідність створення, переміщення або зміни розмірів. У API Windows і в MFC тільки об'єкт вікна зацікавлений в таких подіях. Крім того, дані повідомлень, що не відносяться до самого вікна (наприклад, повідомлення миші і клавіатури), призначені для передачі цілком певному конкретному вікну, отже, їх переадресація приведе до серйозного збою.

У обробці повідомлень меню MFC спирається на функції, API Windows, що надаються. Якщо додаток створює команди меню, то фреймові вікна, що містять це меню, не повинні обробляти ці повідомлення. Замість них цю роботу повинні виконувати обробники повідомлень (такі як обробник WM_COMMAND) розташовані усередині об'єктів, що володіють тими ресурсами, якими дана команда виконується. Кандидатами на обробку повідомлень меню є класи, похідні від CCradTarget, які здатні створювати вікна (наприклад, вікна уявлення), а також об'єкти додатку (класи яких походять від CWinApp). У додатку архітектури документ/уявлення, і об'єкт документа, і об'єкт уявлення є вікнами, тому обидва вони також є кандидатами на обробку повідомлень меню.

Не дивлячись на те, що будь-який клас, похідний від CCmdTarget, здатний отримувати повідомлення меню, фактичні повідомлення передаються при маршрутизації по цілком певному шляху. У табл. 4.2 приведений порядок, в якому MFC перевіряє карту повідомлень при доставці командних повідомлень в додатку, що не відноситься до архітектури документ/уявлення, в додатку архітектури документ/уявлення з одним документом і в додатку архітектури документ/уявлення з безліччю документів.

Отже, основи розробки меню вивчені. У цьому розділі було описано, що таке ресурси меню, як створювати їх і як забезпечити взаємодію з додатком. Щоб створити справжній працездатний інтерфейс меню, необхідно забезпечити його клавішами акселератора. Це і буде наступною темою даного розділу.


 

А также другие работы, которые могут Вас заинтересовать

43140. Синтез автомата по заданому алгоритму роботи 1.49 MB
  Система з чотирьох перемикальніх функцій задана таблицею 2.1 таблиця істиності заданих функцій Необхідно виконати сумісну мінімізацію функцій f1 f2 f3. Отримати операторні представлення для реалізації системи функцій на програмувальних логічних матрицях. 4 Етапи проектування і терміни їх виконання 1 Розмітка станів автомата 2 Формування вхідного та вихідного алфавітів 3 Побудова графа автомата 4 Побудова таблиці переходів 5 Побудова структурної таблиці автомата 6 Синтез комбинаційних схем для функцій збудження тригерів і вихідних...
43141. Туристский потенциал Вологодской области 108 KB
  Эмпирическую базу курсовой работы составили российские правовые акты; нормативные документы; отчетность и аналитические материалы региональных органов власти (Департамента развития муниципальных образований Вологодской области, Департамента культуры и охраны культурного наследия Вологодской области, Департамента международных, межрегиональных связей и туризма Вологодской области); официальные статистические данные в сфере туризма.
43142. Топонимика как наука о географических названиях 260 KB
  Топонимика как наука о географических названиях В современном русском языке существуют сотни тысяч нарицательных слов обозначающих предметы и их свойства явления природы и другие реалии нашей жизни. Кроме них существует и другой особый мир слов выполняющих функцию выделения индивидуализации и представляющих собой разнообразные имена и названия. Географические названия окружают человека всюду. Таким образом географические названия отражают не только историю природные условия данной местности языковые особенности народа но и могут...
43143. Функциональное зонирование городских земель и анализ негативных процессов на них 9.58 MB
  Функциональное зонирование городских земель и анализ негативных процессов на них. Функциональное зонирование городских земель. Выделение состава городских земель и расчет их баланса.
43144. Создание автоматизированной системы управления персоналом для предприятия ОАО «КЗПК» 189 KB
  С появлением первых средств автоматизации были разработаны и первые программы учета и управления персоналом, число которых как в России, так и в других странах мира исчисляется сейчас сотнями. Если говорить о России, то каждое уважающее себя предприятие или организация, имевшие собственный отдел АСУ, еще в 1980-е гг. пользовались программами учета персонала собственной разработки. Эти программы опирались на различные аппаратные платформы (начиная от мэйнфреймов и заканчивая ПК) и инструментальные средства (начиная от PL-1 и заканчивая Clipper и FoxPro).
43145. Разработка пакета автоматизации делопроизводства предприятия 36 KB
  Создать шаблон включающий: логотип рисунок надпись MS Wordrt. В шаблоне создать и или модифицировать стили не менее 5. Создать базу данных в которой реализован автоматизированный учет продаж оказания услуг аналогично тому который реализован в книге Учет MS Excel. Создать таблицы схему данных обеспечить подстановку.
43146. Программа – тест: «Годны ли вы к службе в армии?» 915 KB
  Польза тестов для человека. С давних времен каждый человек пытается узнать о себе что-то больше, чем уже знает. С развитием психологии большое количество людей узнают о некоторых чертах своего характера, которые в нем присутствуют, но он не обращал раньше на них внимание. Узнать больше о своей личности помогают тесты. Они представляют собой интересные вопросы, в результате которых можно получить определенную характеристику на человека. Наиболее популярны тесты, которые касаются взаимоотношений между людьми и личности человека, в общем.
43148. Анализ эффективности использования материальных ресурсов на ОАО «Химрезерв» 531.5 KB
  Основной задачей деятельности любого предприятия является оптимизация его производственной программы, которая позволяет увеличить прибыль или достичь ожидаемых социальных эффектов. В связи с этим постоянно существует потребность в усовершенствовании существующих и внедрении принципиально новых подходов к управлению материальными сырьевыми ресурсами, которые являются одним из основных компонентов производственного процесса в промышленности. Важную роль в повышении эффективности их использование на предприятии играет, прежде всего, правильная организация бухгалтерского учета и анализа как источника информации для принятия управленческих решений.