Главная » Все файлы » Просмотр файлов из архивов » Документы » 20 Обновление интерфейса пользователя

20 Обновление интерфейса пользователя (Лекции по курсу ПОУК-1)

2017-12-28СтудИзба

Описание файла

Файл "20 Обновление интерфейса пользователя" внутри архива находится в папке "Лекции по курсу ПОУК-1". Документ из архива "Лекции по курсу ПОУК-1", который расположен в категории "". Всё это находится в предмете "программное обеспечение управляющих комплексов (поук)" из 6 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "программное обеспечение управляющих комплексов (поук)" в общих файлах.

Онлайн просмотр документа "20 Обновление интерфейса пользователя"

Текст из документа "20 Обновление интерфейса пользователя"

4 стр. Лекция 20. Обновление пользовательского интерфейса

Обновление пользовательского интерфейса

В MFC реализован специальный механизм для обновления таких объектов интерфейса пользователя, как меню, панели управления и панели состояния. Этот механизм предусматривает передачу приложению команд обновления пользовательского интерфейса (update command user interface). Для обработки этих команд предназначена макрокоманда ON_UPDATE_COMMAND_UI, размещаемая в таблице сообщений класса.

Для каждой строки меню, для каждой кнопки панели управления и для каждого индикатора панели состояния передается отдельное сообщение. Время поступления команд пользовательского интерфейса зависит от самих обновляемых объектов.

Меню

В случае меню команды обновления передаются в момент, когда пользователь открывает меню. Для каждой строки меню посылается отдельное сообщение. В результате для всех строк меню, для которых в таблице сообщений приложения присутствуют макрокоманды ON_UPDATE_COMMAND_UI, вызываются соответствующие обработчики. Они могут изменить состояние меню - заблокировать отдельные строки меню, выделить их специальными символами  и  .

Панели управления и состояния

Для кнопок панели управления и индикаторов панели состояния команды обновления передаются в период «бездействия» приложения, когда очередь сообщений приложения пуста.

Если очередь сообщений приложения пуста, вызывается метод OnIdle главного класса приложения. В приложении можно переопределить этот метод и выполнять какую-либо фоновую работу.

Метод OnIdle определен в классе CWinApp и по умолчанию выполняет обновление пользовательского интерфейса - передает команды обновления для тех кнопок панели управления и индикаторов панелей состояния, которые имеют в таблице сообщений приложения макрокоманду ON_UPDATE_COMMAND_UI. Эта макрокоманда вызывает методы-обработчики, которые могут изментть состояние кнопок и индикаторов панелей управления и панелей состояния.

Как правило, ряд строк меню и кнопок панелей управления имеют одинаковые идентификаторы. В этом случае для обработки команд обновления строк меню и кнопок панели управления вызываются одни и те же методы.

Органы диалоговых панелей управления

Не только меню и панели управления обновляются с использованием механизма обновления. Точно также можно обновить и состояние кнопок и других органов управления диалоговых панелей.

Макрокоманда ON_UPDATE_COMMAND_UI

Макрокоманда ON_UPDATE_COMMAND_UI для использования в таблицах сообщений приложения и имеет следующий формат:

ON_UPDATE_COMMAND_UI(id, Имя_метода)

Параметр id определяет идентификатор строки меню, кнопки панели управления или индикатора панели состояния, для которых надо обработать команду обновления. Параметр Имя_метода задает метод, выполняющий обновление.

Если один и тот же метод вызывается для обработки различных макрокоманд обновления, можно использовать другую макрокоманду - ON_UPDATE_COMMAND_UI_RANGE. Она вызывает метод Имя_метода для обработки всех команд обновления, идентификаторы которых находятся в промежутке значений от id1 до id2:

ON_UPDATE_COMMAND_UI_RANGE(id1, id2, MethodName)

Наилучшим способом создания обработчиков команд обновления и включения соответствующих макрокоманд в таблицу сообщений приложения является использование средства ClassWizard.

Однако назначить один обработчик команд обновления нескольким объектам пользовательского интерфейса ClassWizard не позволяет. При необходимости можно самостоятельно включить в таблицу сообщений макрокоманду ON_UPDATE_COMMAND_UI_RANGE.

Еще одно ограничение ClassWizard заключается в том, что он не дает возможности создать обработчики для команд обновления от индикаторов панели состояния. Такие обработчики придется добавлять к класса приложения вручную.

Рассмотрим описание метода-обработчика команд обновления. Вызывающийся макрокомандами ON_UPDATE_COMMAND_UI_RANGE и ON_UPDATE_COMMAND_UI метод-обработчик команд обновления имеет следующий формат:

afx_msg void Имя_метода(CCmdUI *pCmdUI);

Имя метода-обработчика обычно формируется из префикса OnUpdate и названия соответствующего объекта интерфейса пользователя - строки меню, кнопки панели управления или индикатора панели состояния.

В качестве параметра этому методу передается указатель на объект класса CCmdUI. Этот объект представляет элемент пользовательского интерфейса (строку меню, кнопку панели управления, индикатор панели состояния), для которого надо обработать команду обновления. Вызывая методы класса CCmdUI, можно легко изменять состояние соответствующего объекта интерфейса пользователя.

Методы класса CCmdUI

Класс CCmdUI играет важную роль в работе таких объектов пользовательского интерфейса как меню, панели управления и панели состояния. Методы этого класса позволяют заблокировать отдельные элементы меню, панелей управления и состояния, отметить их и т.д.

Также этими методами можно пользоваться для блокирования элементов диалоговых панелей управления, для выбора положения переключателей в этих панелях.

Рассмотрим немногочисленные методы этого класса.

Метод Enable Этот виртуальный метод позволяет установить или снять блокировку с объекта пользовательского интерфейса, представленного объектом класса CСmdUI.

Заблокированные элементы не могут быть использованы до момента снятия блокировки. В случае блокировки индикатора панели состояния его текст не будет отображаться.

Метод SetCheck. Виртуальный метод SetCheck можно применять для изменения состояния строки меню и кнопок панели управления.

При использовании этого метода для строки меню нулевое значение параметра приводит к выделению строки меню символом  , а единичное значение - к снятию выделения.

В случае применения метода SetCheck для кнопки панели управления параметр метода задает новое состояние кнопки: нулевое значение - кнопка переходит в нажатое состояние, единичное значение - кнопка переходит в отжатое состояние, если параметр равен двум - кнопка переходит в промежуточное состояние.

Этот же метод используется и для управления внешним видом индикаторов панелей состояния. Если параметр метода равен нулю, то рамка индикатора изменяется таким образом, что он будет располагаться выше общего уровня панели состояния. Если параметр равен единице, то индикатор переходит в нормальное состояние.

Метод SetRadio

Виртуальный метод SetRadio можно применять для изменения состояния строки меню и кнопок панели управления.

Если метод используется для управления меню, то значение TRUE параметра приводит к выделению строки меню символом  . Если параметр равен FALSE, то выделение снимается.

В случае использования метода SetRadio для кнопкой панели управления параметр метода задает новое состояние кнопки. Значение FALSE переводит кнопку в нажатое состояние, значение TRUE - в отжатое состояние.

Этот же метод используется и для управления внешним видом индикаторов панелей состояния. Если параметр метода равен FALSE, то рамка индикатора изменяется таким образом, что он будет располагаться выше общего уровня панели состояния. Если параметр равен TRUE, то индикатор переходит в нормальное состояние.

Метод SetText

Виртуальный метод SetText может быть вызван для изменения текста, отображаемого в панелях состояния, в строке меню, в названиях кнопок и некоторых элементах диалоговых панелей управления. В качестве параметра следует указать строку, которую нужно вывести.

Следует отметить, что при использовании метода SetText для изменения текста в панелях состояния необходимо отдельно позаботиться об изменение размера индикатора. Метод SetText не меняет размера индикатора, потому следует рассчитать ширину текста и изменить размер индикатора с помощью соответствующего метода.

Элементы данных класса CcmdUI

В состав класса CCmdUI входит и несколько элементов данных. Они позволяют определить идентификатор строки меню, кнопки панели управления или индикатора панели состояния, для которого вызван метод-обработчик:

  • m_nID - идентификатор объекта, для которого вызван метод-обработчик.

  • m_nIndex - индекс объекта, для которого вызван метод-обработчик.

  • m_pMenu - указатель на меню. Если команда обновления передана не от меню, элемент m_pMenu содержит значение NULL.

  • m_pOther - указатель на панель состояния или панель управления. Если команда обновления передана от меню, элемент m_pOther содержит значение NULL.

 

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5168
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее