- •Лабораторный практикум «Основы разработки приложений Windows» Книга 1
- •Часть 1. Теоретические сведения4
- •Часть 2. Лабораторный практикум95
- •Часть 1 Теоретические сведения
- •1. Структура приложения Windows Простейшая программа с главным окном
- •Структура программы
- •Главная функция WinMain()
- •Регистрация класса окна
- •Создание и показ окна
- •Сообщения Windows и цикл их обработки
- •Оконная функция
- •Макрос handle_msg и структурирование программы
- •2. Интерфейс графических устройств
- •Простая программа, использующая средства gdi
- •Обработка сообщений wmpaint
- •Контекст устройства
- •Использование графических инструментов
- •3. Ресурсы: меню Простая программа с меню
- •Файл ресурсов
- •Описание меню в файле ресурсов
- •Сообщение wmcommand
- •Программное создание меню
- •Плавающее меню
- •Инструментальная панель
- •Всплывающие подсказки
- •0,"Первая строка"
- •1,"Вторая строка"
- •2,"Третья строка"
- •4. Ресурсы: диалоговые окна
- •Простая программа с меню и диалогом
- •Описание диалога в файле ресурсов
- •Обслуживание модального диалога
- •Модальный диалог как главное окно приложения
- •Немодальный диалог
- •Список в диалоговом окне
- •Окно редактирования и статический элемент управления
- •Графика в диалоговом окне
- •Перекрашивание диалогового окна и его элементов
- •Часть 2 Лабораторный практикум Работы лабораторного практикума Работа 1. Вызов функций Windows
- •Работа 2. Главное окно приложения (пример 1-1 из настоящего пособия)
- •Работа 3. Вывод в главное окно приложения текста и фигур (пример 2-1 из настоящего пособия)
- •Работа 4.Вывод в главное окно приложения текста и фигур (индивидуальное задание а)
- •Работа 5. Меню и модальный диалог (пример 4-1 из настоящего пособия)
- •Работа 6.Меню (индивидуальное задание в)
- •Работа 7.Модальный диалог в качестве главного окна приложения (индивидуальное задание с)
- •Работа 8.Вывод графика в главное окно приложения (индивидуальное заданиеD)
- •Работа 9. Немодальный диалог
- •Работа 10. Диалог с окном редактирования
- •Работа 11. Программное создание меню
- •Работа 12. Плавающее меню
- •Работа 13. График в диалоговом окне
- •Работа 14. Инструментальная панель (tool bar)
- •Работа 15. Инструментальная панель со всплывающими подсказками (tool tips)
- •Работа 16. Пользовательские пиктограммы и курсоры
- •Работа 17. Локализация программных продуктов
- •Индивидуальные задания лабораторного практикума
Работа 11. Программное создание меню
Модифицируйте программу из работы 6 (индивидуальное задание B), удалив из проекта файл ресурсов и выполнив установку меню программным образом (см. подраздел “Программное создание меню” настоящего пособия). Создание меню удобнее всего осуществить в функции обработки сообщенияWMCREATE.
Работа 12. Плавающее меню
Модифицируйте предыдущую программу, заменив в ней статическое меню плавающим (см. раздел “Плавающее меню” настоящего пособия). Активизация плавающего меню должна выполняться при нажатии правой клавиши мыши, для чего в оконную функцию следует включить обработку сообщенияWMRBUTTONDOWN, ивсе действия по созданию меню выполнить в функции обработки этого сообщения.Получите координаты вывода плавающего меню из параметров функцииOnRButtonDown(). Убедитесь в неудовлетворительном позиционировании плавающего меню. Улучшите программу, получивэкранныекоординаты мыши из пакета сообщения (структурной переменнойmsg).
Работа 13. График в диалоговом окне
На основе индивидуального задания С (вывод графика в главное окно) составьте программу, в которой в качестве главного окна приложения выступает модальный диалог без каких-либо органов управления (текстов, кнопок и проч.). Закрасьте окно диалога каким-нибудь цветом и выведите в него ваш график (см. пример 4-6 настоящего пособия).
Закрашивание диалогового окна, как и вывод в него графика, можно выполнить в функции обработки сообщения WMPAINT. Для закрашивания окна следует воспользоваться функциейFillRect(); требуемую для этой функции структуруRECT с координатами рабочей области можно получить из структурыPAINTSTRUCT.
Работа 14. Инструментальная панель (tool bar)
Воспользуйтесь программой из работы 6 (индивидуальное задание В). Выведите в главное окно, помимо обычного меню, инструментальную панель, состоящую из трех кнопок. Нажатие кнопок должно приводить к перекрашиванию фона главного окна в различные цвета. Для обозначения функций кнопок на них можно нарисовать крупные символы (например, круг или крест) соответствующего цвета. Процедура создания инструментальной панели описана в подразделе “Инструментальная панель” настоящего пособия. Для рисования кнопок воспользуйтесь редактором ресурсов среды программирования, как это описано ниже.
Вызовите редактор ресурсов в режиме создания растрового изображения (FileNewResource Project...Bitmap. Выбрав пункт менюBitmapSize and Attributes..., установите ширину изображения 48 пикселов, высоту 16 пикселов, 16 цветов, без компрессии. В таком рисунке поместятся изображения трех кнопок размером 16х16 пикселов. Выбором пунктов менюBitmapShowTool Palette и BitmapShowColor Palette выведите на экран палитры инструментов рисования и цветов. Выбором пункта менюBitmapZoom In увеличьте изображение до приемлемого размера. Разделите поле рисунка на три равные части (которые будут соответствовать трем кнопкам инструментальной линейки), нарисовав с помощью карандаша точки или вертикальные линии с горизонтальными координатами 15 и 31. Нарисуйте какие-либо цветные изображения для всех трех кнопок и залейте фон рисунка серым цветом. Выйдите из редактора ресурсов, сохранив рисунок под именем, например, 14.BMP.
В функцию OnCommand()введите обработку сообщений от трех новых управляющих элементов – кнопок. Обработка будет заключаться в присваивании глобальной переменной типаHBRUSH значения дескриптора кисти соответствующего цвета и вызове функцииInvalidateRect() для инициирования перекрашивания главного окна.
В функции OnPaint() прежде всего закрасьте окно с помощью функцииFillrect(),используя упомянутый выше глобальный дескриптор кисти, который в функцииOnCommand()уже принял требуемое значение. После этого проанализируйте значение глобального переключателя изображения и выведите ту или иную фигуру (в соответствии с индивидуальным заданием В).