- •Методические рекомендации
- •План лекции
- •Интерфейс графического устройства
- •Программирование, основанное на ресурсах
- •Управления памятью
- •Документы и их представление
- •Контрольные вопросы
- •Редактирование функций.
- •Изучение работы приложения.
- •Самостоятельная работа.
- •Добавление своего класса.
- •Домашняя работа.
- •Лекция 2. Основы программирования. Работа с классом Вид. Методические рекомендации:
- •Интерфейс графического устройства
- •Работа с gdi объектами
- •Пример создания нового gdi объекта
- •Режимы преобразования координат
- •Режимы преобразования координат с постоянным масштабом
- •Режимы преобразования координат с переменным масштабом
- •Замечание
- •Координатные пространства mfc
- •Пример использования режимов преобразования координат
- •Работа с окнами, содержащими полосы прокрутки
- •Линейки прокрутки
- •Различные способы прокрутки
- •Прием ввода с клавиатуры
- •Контрольные вопросы
- •Обработка сообщений от мыши.
- •Задание для самостоятельной домашней разработки.
- •Лекция 3. Меню. Панели инструментов и строки состояния Методические рекомендации
- •Меню Windows
- •Обновление командного пользовательского интерфейса
- •Класс cMenu
- •Создание контекстных меню
- •Панели элементов управления и каркас приложений
- •Панель инструментов
- •Растровое изображение панели инструментов
- •Состояния кнопок Любая кнопка может находиться в следующих состояниях
- •Всплывающие подсказки
- •Строка состояния
- •Определение секций в строке состояния
- •Строка сообщений
- •Индикатор состояния
- •Управление строкой состояния
- •Контрольные вопросы:
- •Добавление переменных-членов.
- •Добавление функции OnMouseMove.
- •Программирование команд контекстного меню.
- •Программирование команд главного меню.
- •Домашняя работа.
- •Лекция 4. Диалоговые окна и стандартные элементы управления Методические рекомендации
- •Работа с модальным диалоговым окном
- •Стандартные элементы управления
- •Работа с немодальными диалоговыми окнами
- •Пользовательские сообщения
- •Принадлежность диалогового окна
- •Контрольные вопросы
- •Создание класса “диалогового окна”.
- •Добавление переменных-членов класса вашего диалогового окна.
- •Написание инициализирующего кода
- •Присваивание переменным начальных значений.
- •Самостоятельная работа.
- •Домашнее задание.
- •Лекция 5. Обработка сообщений Windows и программирование многопоточных приложений Методические рекомендации
- •Обработка сообщений в однопоточной программе
- •Передача управления
- •Таймеры
- •Обработка в периоды простоя
- •Программирование многопоточных приложений
- •Функция рабочего потока и запуск потока
- •Общение основного потока с рабочим
- •Общение рабочего потока с основным
- •Синхронизация потоков с использованием событий
- •Блокировка потоков
- •Критические секции
- •Потоки пользовательского интерфейса
- •Контрольные вопросы
- •Домашнее задание.
- •Задание для самостоятельной работы
- •Управление процессом Пример 1.
- •2. Замена образа процеса Пример 2. Использование функции exec.
- •Пример 3. Использование неименованного канала.
- •Пример 4. Создание именованного канал с именем "fifo".
- •3. Сигналы.
- •Пример 5. Использование сигналов.
- •Пример 6. Сообщения.
- •Пример 7. Сообщения.
- •Пример 8. Разделение памяти.
- •Пример 9. Использование семафоров.
- •Пример 10. Создание процесса вWindows.
- •Пример 11. Использование неименованного канала.
- •Пример 12. Использование именованного канала.
- •Пример 13. Использование разделяемой памяти File Mapping.
- •Пример 14. Использование Mailslot.
- •Пример 15. Использование событий.
Задание для самостоятельной домашней разработки.
Разработайте несколько других фигур для вывода на экран при помощи функции Polygon. Так как за перерисовку экрана отвечает функция OnDraw, то любое изменение окна приложения приведет к его перерисовки и соответственно к потере изображения. Сделайте так, чтобы рисование шло внутри функции OnDraw. Для этого для каждого типа фигур создайте массивы, хранящие точки их вывода на экран, а в обработчиках сообщений от мыши добавляйте эти точки в соответствующие массивы, и вызывайте функцию заставляющую перерисовывать экран – Invalidate. Саму же перерисовку выполняйте в функции OnDraw.
Лекция 3. Меню. Панели инструментов и строки состояния Методические рекомендации
При работе с меню следует обратить внимание студентов на изменение меню в период выполнения программы, так на практике это очень часто применяется.
Следует иллюстрировать нижеследующий материал наглядными примерами. Очень хорошо для этого подходят программы из пакета Microsoft Office.
План
Меню Windows
Панели элементов управления и каркас приложения
Панель инструментов
Строка состояния.
Меню Windows
Меню Microsoft Windows – знакомый всем компонент приложения, состоящий из горизонтального списка элементов верхнего уровня; с ним связаны меню, открывающиеся, когда пользователь выбирает какой – либо из его элементов. Обычно для окна-рамки определяется ресурс меню по умолчанию, загружаемый при создании этого окна. Можно определить ресурс и не связанный с каким-либо окном-рамкой. В этом случае программа должна вызывать функции, необходимые для загрузки и активизации меню. |
Ресурс меню полностью определяет начальное состояние меню: какие-то команды могут быть отключены, помечены галочкой, или сгруппированы с помощью разделителей. Раскрывающиеся меню могут быть многоуровневыми. Если команда меню первого уровня связанна с подменю, то рядом с этой командой появляется стрелочка указывающая вправо.
В Visual C++ входит простой в применении редактор меню. Это средство позволяет создавать и редактировать меню в режиме WYSIWYG. Для каждой команды меню открывается диалоговое окно, в котором можно задать характеристики этой команды. Полученное определение ресурса сохраняется в RC-файле проекта. Каждой команде меню присваивается свой идентификатор, который определяется в файле Resource.h.
Библиотека MFC расширяет функциональные возможности стандартных меню Windows. У каждого элемента меню может быть строка подсказки, появляющаяся в строке состояния окна-рамки, при выборе этого элемента. Данные подсказки – это строковые ресурсы Windows, связанные с командами меню одинаковыми идентификаторами. Для редактора меню и вашей программы эти подсказки выглядят как часть определения команды меню.
Обновление командного пользовательского интерфейса
Весьма часто приходится менять внешний вид элементов меню, чтобы отразить внутреннее состояние программы. Например, если в меню Edit присутствует команда Clear All (Очистить все), то Вы, может быть, захотите отключить ее, если очищать нечего. Без сомнения, в меню Windows-программ Вы видели отключенные и помеченные галочками команды.
При программировании в Win32 синхронизировать состояние элементов меню в соответствии с состоянием приложения не так-то просто. Каждый участок кода, изменяющий внутреннее состояние программы, должен содержать операторы, обновляющие меню. В MFC-библиотеке реализован другой подход, основанный на вызове специальной функции-обработчика, которая и обновляет командный пользовательский интерфейс при каждом открытии меню. Аргумент этой функции — объект CCmdUI, содержащий указатель на соответствующий элемент меню. Используя этот указатель, функция-обработчик может изменить внешний вид команды меню. Подобные обработчики применимы к элементам раскрывающихся меню, но не к меню верхнего уровня, постоянно присутствующим на экране. Такой обработчик нельзя использовать, например, для отключения меню File.
Требования к определению обработчиков, обновляющих командный пользовательский интерфейс, сходны с требованиями к определению обработчиков команд. Вам нужна собственно функция, специальный элемент таблицы сообщений и, конечно же, прототип функции. Идентификатор (в нашем случае IDM_ZOOM) применяется тот же, что и для команды. Вот что надо добавить к файлу кода для класса “вид”: BEGIN_MESSAGE_MAP(CMyView, CView) ON_UPDATE_COMMMAND_UI(IDM_ZOOM, OnUpdateZoom) END_MESSAGE_MAP() void GMyView::OnUpdateZoom(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bZoomed); // in_bZoomed - переменная-член класса } |