Конспект лекций по дисциплине «Высокоуровневые методы информатики и программирования» для студентов специальности 080801 «Прикладная информатика в экономике»
Вид материала | Конспект |
СодержаниеСтруктура приложения Windows |
- Темы курсовых работ по дисциплине «Высокоуровневые методы информатики и программирования», 82.9kb.
- Рабочая программа по дисциплине: «высокоуровневые методы информатики и программирования», 127.42kb.
- Курс Методы визуального программирования при разработке системного программного обеспечения., 30.14kb.
- Учебно-методический комплекс «Высокоуровневые методы информатики и программирования», 569.1kb.
- Рабочая программа по дисциплине «Исследование операций в экономике» для специальности, 137.37kb.
- Рабочая программа по дисциплине "Имитационное моделирование экономических процессов", 207.47kb.
- Рабочая программа по дисциплине «Математическая экономика» для специальности 080801, 222.52kb.
- Рабочая программа по дисциплине "Технико-экономический анализ деятельности предприятий", 356.09kb.
- Рабочая программа по дисциплине "Финансы и кредит" Для специальности 080801 Прикладная, 181.17kb.
- Рабочая программа по дисциплине "алгоритмизация и программирование" для специальности, 136.39kb.
Структура приложения Windows
Каждому приложению Windows на экране соответствует окно. Окно - это прямоугольная область экрана стандартного вида (рис. 4.5), через которую пользователь взаимодействует с программой.
Рис. 3.49. Простейшее окно приложения Windows'95.
Хотя одно приложение может создать несколько окон, всегда имеется одно «главное» окно, при закрытии которого приложение завершает свою работу.
С точки зрения программиста, окно - это самостоятельно существующий объект, параметры которого (размеры, расположение, характеристики интерфейсных элементов и т.п.) хранятся в специальной структуре данных, а поведение определяется обработчиками сообщений, составляющими оконную функцию.
Таким образом, минимально любое приложение Windows состоит из двух частей: основной программы и оконной функции.
Основная программа обеспечивает функционирование приложения. При запуске она должна создать и вывести на экран главное окно приложения. При этом приложение регистрируется в системе, и для него создается очередь сообщений. Затем в основной программе запускается цикл обработки сообщений, и приложение переходит в режим ожидания сообщений. Появившиеся в очереди сообщения выбираются циклом обработки сообщений и передаются через Windows соответствующему окну приложения. При этом Windows вызывает нужную оконную функцию для обработки сообщения (рис. 4.6) и передает ей само сообщений в качестве параметров.
Рис. 3.50. Инициализация приложения и переход к обработке сообщений.
Примечание. Такой сложный механизм обработки сообщений в первую очередь связан с тем, что программа должна регулярно возвращать управление Windows, для планирования мультипрограммной обработки.
Все полезные для пользователя действия приложения программируются в виде «реакций окна» на получаемые сообщения.
Как уже говорилось выше, весь обмен информацией между объектами системы (между приложениями, между приложением и операционной системой, между основной программой и оконными функциями) осуществляется через посылку сообщений.
В Windows определено множество типов сообщений. Каждое из них кодируется уникальным 32-разрадным числом, которому ставится в соответствие стандартное имя, например, WM_CHAR (посылается активному приложению при нажатии и отпускании клавиш на клавиатуре), WM_PAINT (посылается окну при необходимости его перерисовки), WM_CLOSE (посылается окну при необходимости его закрытия), WM_TIMER (посылается приложению при истечении указанного интервала времени) и т. д.
Помимо уникального номера сообщение включает два 32-разрядных параметра, содержащие дополнительную информацию, характер которой зависит от типа сообщения.
Например, при изменении состояния клавиатуры (нажатии или отпускании клавиши) драйвер клавиатуры инициирует посылку сообщения WM_CHAR активному приложению (приложению, окну которого принадлежит фокус ввода). При этом через параметры передаются ASCII-код символа, количество повторений, определяемое при удержании клавиши в нажатом положении, scan-код. В качестве дополнительной информации сообщается, была ли клавиша нажата или отпущена, была ли клавиша нажата до формирования сообщения, нажата ли одновременно клавиша Alt и т.д. Приложение, получив сообщение, сопровождающееся столь подробной информацией, может выбрать те данные, которые ему необходимы и, например, вывести этот символ в окно приложения (рис. 4.7).
Рис. 3.51. Обработка ввода символа и его отображение в окне
Заметим, что для выполнения операций, связанных с управлением программно-аппаратными ресурсами (в том числе и для организации вывода информации в «свое» окно), обработчики сообщений, должны обращаться к операционной системе.
В отличие от сообщений от клавиатуры, сообщения от мыши передаются тому приложению, на поле окна которого находится курсор мыши, т.е. могут быть отправлены как активному, так и неактивному приложению. Получив сообщение от мыши, неактивное приложение становится активным, т.е. получает фокус ввода, и теперь вся вводимая с клавиатуры информация будет передаваться этому приложению.
Однако не все сообщения попадают в функцию окна приложения через очередь сообщений. Приложение Windows одновременно манипулирует сообщениями трех типов:
- внешними (от Windows и других приложений) и внутренними (от самого приложения) сообщениями, поступающими через очередь сообщений;
- прямыми вызовами оконных функций (такой вызов также оперирует информацией, форматированной под сообщение);
- прямыми вызовами методов не оконных объектов приложения (в отличие от предыдущих случаев передаваемое сообщение как в ранних ООП системах не форматировано под сообщение).
Так, сообщения поддержки окна, формируемые Windows, передаются оконной функции напрямую.
Примером может служить сообщение WM_DESTROY (рис. 4.8), которое формируется при закрытии пользователем окна приложения.
Рис. 3.52. Обработка сообщения WM_DESTROY
Это сообщение сразу передается оконной функции, которая вызывает функцию API, выполняющую закрытие окна приложения, и формирует сообщение WM_QUIT, помещая его в очередь приложения. При выборке этого сообщения в цикле обработки сообщений выполняется завершение цикла, и управление передается операторам завершения приложения.