- •Методические рекомендации
- •План лекции
- •Интерфейс графического устройства
- •Программирование, основанное на ресурсах
- •Управления памятью
- •Документы и их представление
- •Контрольные вопросы
- •Редактирование функций.
- •Изучение работы приложения.
- •Самостоятельная работа.
- •Добавление своего класса.
- •Домашняя работа.
- •Лекция 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. Использование событий.
Управление строкой состояния
Стандартной строке состояния присваивается идентификатор дочернего окна AFX_IDW_STATUS_BAR. Именно его каркас приложений ищет для вывода подсказки по элементам меню. Обработчики сообщений обновления пользовательского интерфейса используют три идентификатора строковых ресурсов для индикаторов состояния клавиатуры в базовом классе окна-рамки: ID_INDICATOR_CAPS, ID_INDICATOR_NUM и ID_INDICATOR_SCRL. Чтобы самому управлять строкой состояния, нужно применить другой идентификатор дочернего окна и другие константы для индикаторов. Идентификатор для окна строки состояния назначается вызовом CstatusBar::Create в функции-члене OnCreate производного класса окна-рамки. Эта функция содержится в файле MainFrm.cpp, генерируемом AppWizard. Идентификатор окна — третий параметр функции Create и по умолчанию равен AFX_IDW_STATUS_BAR. Чтобы назначить свой идентификатор, замените вызов m_wndStatusBar.Create(this); на m_wndStatusBar.Create (this, WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, ID_MY_STATUS_BAR), Конечно, нужно определить и константу ID_MY_STATUS_BAR в файле resource.h, применяя редактор символов. Стандартное меню View, формируемое каркасом приложений, позволяет включать и отключать показ строки состояния. Эта логика реализуется кодом, использующим идентификатор окна AFX_IDW_STATUS_BAR, который тоже придется изменить. В своем производном классе окна-рамки напишите элементы таблицы сообщений и обработчики для команды ID_VIEW_STATUS_BAR и сообщений, связанных с обновлением пользовательского интерфейса. ID_VIEW_STATUS_BAR — это идентификатор элемента меню Status Bar. Обработчики в производном классе переопределяют стандартные обработчики из базового класса CFrameWnd. |
Контрольные вопросы:
Что такое меню?
Какие виды меню вы знаете?
Что такое панель инструментов?
Что такое строка состояния?
Какие секции есть в строке состояния?
Какой класс отвечает за работу со строками состояния?
Какой класс отвечает за работу с панелями инструментов?
Какой класс отвечает за работу с меню?
Лабораторная работа 3.1
Задание:
Усовершенствовать редактор из предыдущей лабораторной работы, таким образом, чтобы в главном меню можно было выбирать цвета линий, и заливки фигур, а в контекстном меню формы фигур.
Ход работы:
Создание проекта.
Создайте стандартный проект и назовите его L3_1.
Создание ресурсов меню.
Для того чтобы создать меню необходимо выполнить команду меню Insert->Resource, в появившемся окне выбрать Menu и нажать кнопку Add (Рис. 3.1.1).
После этого необходимо перейти на вкладку Resource View (Рис. 3.1.2) и выбрав ваш ресурс меню приступить к его редактированию. Для того чтобы корректно отображались символы кириллицы нужно щелкнуть правой клавишей на ресурсе вашего меню, и в появившемся контекстном меню выбрать пункт Properties. Далее перед вами откроется окно свойств, в котором следует установить русский язык (Рис.3.1.3).Создайте два ресурса меню, такие, как показано на рисунке 3.1.4
Если щелкнуть правой клавишей мыши на одном из пунктов, и в появившемся контекстном меню выбрать пункт Properties, то откроется окно свойств данного пункта где можно в окне Prompt написать подсказку, которая будет отображаться в строке состояния при выборе данного пункта меню. Напишите для каждого пункта свою подсказку. Например подсказка для пункта Цвета линий->Красный:
Рисует фигуру красным контуром .
Программирование контекстного меню. Для того чтобы сделать меню контекстным необходимо добавить в класс CL3_1View обработчик сообщения WM_CONTEXTMENU.
//Создание контекстного меню
void CL3_1View::OnContextMenu(CWnd* pWnd, CPoint point)
{ // Создаем меню
CMenu menu;
// Связываем созданное меню с ресурсом
menu.LoadMenu(IDR_MENU1);
// Конструируем контекстное меню, таким образом,
// чтобы оно раскравылась справа от курсора и
// пункты меню выравнивались по левому краю.
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,point.x,point.y,this); }