- •Методические рекомендации
- •План лекции
- •Интерфейс графического устройства
- •Программирование, основанное на ресурсах
- •Управления памятью
- •Документы и их представление
- •Контрольные вопросы
- •Редактирование функций.
- •Изучение работы приложения.
- •Самостоятельная работа.
- •Добавление своего класса.
- •Домашняя работа.
- •Лекция 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. Использование событий.
Всплывающие подсказки
Всплывающие подсказки (ToolTips) встречаются в разных. Windows-приложениях, в том числе и в Visual C++. Если поместить курсор мыши на кнопку панели инструментов и оставит его там, то через определенный промежуток времени рядом с кнопкой появится маленькое окошко с текстом.
Чтобы создать всплывающую подсказку, просто добавьте ее в конец подсказки для меню, начав текст с символа новой строки \n. Редактор ресурсов позволяет модифицировать строку подсказки при редактировании изображений кнопок на панели инструментов. Для этого просто дважды щелкните левую кнопку мыши. |
Строка состояния
Окно строки состояния не принимает ввод от пользователя и не генерирует командных сообщений. Его задача — просто показывать под управлением программы текст в соответствующих секциях.
Строка состояния поддерживает два типа текстовых секций: строку сообщений и индикаторы. Чтобы использовать строку состояния для вывода информации, специфичной для конкретного приложения, сначала отключите стандартную строку состояния, которая отображает подсказки по элементам меню и сообщает статус клавиатуры. |
Определение секций в строке состояния
Секции в строке состояния определяются статическим массивом indicators, который АррWizard создает в файле MainFrm.cpp. Константа ID_SEPARATOR задает секцию для строки сообщений, а другие константы служат идентификаторами строковых ресурсов и определяют секции индикаторов. Функция-член CStatusBar::SetIndtcators, вызываемая в производном классе окна-рамки приложения, приводит строку состояния в соответствие с содержимым массива indicators. |
Строка сообщений
В этой секции показывается строка, задаваемая (динамически) программой. Чтобы определить выводимый текст, сначала получите доступ к объекту строки состояния, после чего вызовите функцию-член CStatusBar::SetPaneText, передав ей индекс секции. Индексы начинаются с 0, нулевая секция — крайняя слева, секция 1 размещается правее и т.д. Приведенный ниже фрагмент кода входит в функцию-член класса “вид”. Обратите внимание: здесь приходится сначала подниматься на уровень приложения, а потом возвращаться к основному окну-рамке: CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd; CStatusBar* pStatus = &pFrame->m_wndStatusBar; pStatus->SetPaneText(0, "строка сообщения для первой секции"); Обычно длина секции сообщений составляет ровно четверть ширины экрана. Однако у первой секции (индекс 0) длина переменная; она не менее четверти ширины экрана и может быть увеличена, если в строке состояния есть место. |
Индикатор состояния
Секция индикатора состояния связана с единственной строкой ресурса, которая показывается или скрывается в соответствии с логикой функции-обработчика. Индикатор обозначается идентификатором строкового ресурса, и тот же идентификатор применяется для распределения сообщений обновления интерфейса. Индикатор Caps Lock обрабатывается в классе окна-рамки при помощи приведенных ниже элемента таблицы сообщений и функции-обработчика (функция Enable включает индикатор, если активен режим Caps Lock): ON_UPDATE_COMMAND_UI (ID_INDICATOR_CAPS, OnUpdateKeyCapsLock) void CMainFrame::OnUpdateKeyCapsLock(CCmdUI* pCmdUI) { pCmdUI->Enable(::GetKeyState(VK_CAPITAL) & 1); } Функции, обновляющие пользовательский интерфейс, вызываются в цикле простоя приложения, поэтому строка состояния обновляется всякий раз, когда приложение получает сообщения. Длина секции индикатора равна длине соответствующей строки из ресурса. |