Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Взаимодействие программы и Windows






Группа операционных систем Windows включает две линейки операционных систем: Windows 9x (Windows 95, Windows 98, Windows Millennium Edition) и Windows NT (Windows NT, Windows 2000, Windows XP). Несмотря на то, что это различные операционные системы, управление прикладными программами основано на одних и тех же принципах, а сами программы для взаимодействия с операционной системой используют один и тот же интерфейс – библиотеку Win32 API, поэтому будем называть все эти операционные системы (ОС) обобщенным именем Windows.

До сих пор рассматривалась разработка программ на языке C и C++ без указания, в какой ОС будет выполняться программа. Программа начиналась с исполнения функции main(), которая получала управление от операционной системы; после завершения функции main() управление возвращалось операционной системе. Таким образом, в ОС в данный момент времени могла исполняться только одна прикладная программа. Такой вариант взаимодействия операционной системы и прикладной программы принят в однозадачных ОС, например, в MS-DOS.

Windows – многозадачные операционные системы, позволяющие одновременно выполнять несколько прикладных программ. В Windows используется вытесняющая многозадачность, т. е. управление программами операционная система полностью берет на себя. Управление прикладными программами в Windows осуществляется с помощью сообщений.

Сообщение – это информация о каком-либо происшествии (событии) в системе: это могут быть действия пользователя, например, выбор команды меню, нажатие кнопки или изменение размера окна; сообщения могут также возникнуть как реакция на работу устройств или других программ. Сообщения в Windows в зависимости от вызвавшей их причины имеют имена WM_… (сокращение от Windows Message). Например, с изменением положения окна на экране связано сообщение WM_PAINT, а с выбором пункта меню – WM_COMMAND. Все сообщения ОС Windows помещает в системную очередь сообщений. Прикладная программа (приложение – в терминах, принятых в Windows) также имеет собственную очередь сообщений. Сообщения из системной очереди помещаются в очередь сообщений приложения, которому адресовано данное сообщение. Приложение, реагирующее на сообщения, имеет цикл обработки сообщений, который выполняет опрос очереди сообщений приложения. При появлении сообщения в очереди цикл обработки сообщения читает это сообщение и отправляет на обработку, при этом сообщение из очереди удаляется. Цикл обработки сообщений выполняется в течение всей работы программы.

Реакция приложения на сообщение различается в зависимости от типа сообщения, например, при изменении размеров или положения окна должна произойти перерисовка окна, а при нажатии кнопки должны быть выполнены действия, связываемые с этой кнопкой. Перечень сообщений, на которые реагирует приложение, и действия, которые выполняет приложение при появлении того или иного сообщения, определены в специальной функции, называемой оконной процедурой.

Каждое приложение в Windows имеет окно, называемое главным окном. Главное окно может отображаться на экране или быть свернутым. Окно используется для вывода результатов работы приложения и для ввода команд пользователя. С окном связывается оконная процедура. Кроме главного окна, в приложении могут быть и другие окна, и каждое из них может иметь собственную оконную процедуру (рис. 20.1).

Рис. 20.1. Взаимодействие приложения и OC Windows.

Точка входа в приложение для Windows – функция WinMain(). Она выполняет действия 1 и 2 по созданию окон в системе и запускает цикл обработки сообщений приложения. Сообщение, появившееся в системе, попадает в системную очередь сообщений (3), затем в очередь сообщений приложения, которому оно адресовано (4). Цикл обработки сообщений читает сообщение (5), распознает и передает управление ОС (6). ОС вызывает оконную процедуру (7), по завершении оконной процедуры управление возвращается в Windows (8). Таким образом, в отличие от функции main(), WinMain() получает управление от операционной системы только на короткое время, после чего управление возвращается ОС, которая и вызывает оконную процедуру. После выполнения действий оконной процедурой управление опять передается ОС. Такой механизм взаимодействия приложения и ОС позволяет ОС регулярно получать управление и воздействовать в любой момент времени на любое выполняющееся приложение.

Остановка цикла обработки сообщений вызывается сообщением WM_QUIT и означает завершение функции WinMain(). С завершением функции WinMain() завершается работа приложения.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал