3. Особенности windows–программирования
Windows 95 – одна из последних версий графической операционной системы (ОС) Windows, представленной впервые в ноябре 1985 года для использования на компьютерах типа IBM PC и совместимых с ним. За последнее десятилетие ОС Windows почти полностью вытеснила всех конкурентов и стала фактически эталоном ОС для персональных компьютеров.
В Windows 95 объединены средства, имеющиеся в более ранних ОС. К ним также добавлены новые средства, позволяющие более быстро выполнять большие объемы работ.
Программирование под Windows является одним из видов объектно-ориентированного программирования (ООП). В основе ОС Windows лежит ее способность отображать информацию, используя для этого окна. Окно – это прямоугольная область на экране, оно получает информацию от клавиатуры или мыши пользователя и выводит графическую информацию на своей поверхности (можно одновременно открыть несколько окон, чтобы одновременно работать с несколькими приложениями, тем самым увеличив производительность компьютера). Пользователь рассматривает окна на экране в качестве объектов и непосредственно взаимодействует с этими объектами.
Самой примечательной особенностью Windows является графический интерфейс пользователя. Дисплей сам становится источником, откуда в машину вводится информация. Он показывает различные графические объекты в виде картинок и конструкций для ввода информации (таких, как кнопки или полосы прокрутки). Используя клавиатуру или мышь, пользователь может непосредственно манипулировать этими объектами на экране. Графический интерфейс пользователя Windows существенно облегчает диалог с персональным компьютером.
ОС Windows позволяет создавать т.н. «дочерние окна управления». Дочернее окно обрабатывает сообщения мыши и клавиатуры и извещает родительское окно о том, что состояние дочернего окна изменилось. Оно инкапсулирует особые действия, связанные с графическим представлением окна на экране, реакцией на пользовательский ввод, и извещения другого окна при вводе важной информации. Можно создавать свои собственные дочерние окна управления, но есть также возможность использовать преимущества нескольких уже определенных классов окна (и оконных процедур), с помощью которых программа может создавать стандартные дочерние окна управления. Windows содержит следующие предопределенные классы окон: кнопка, радиопереключатель, флажок, окно редактирования, окно списка, окно комбинированного списка, статическое окно, полоса прокрутки.
Для упрощения создания Windows‑программ с интерфейсом пользователя, соответствующим интерфейсу оболочки системы, корпорация Microsoft разработала библиотеку органов управления общего пользования (common control library). Она содержит 17 элементов, которые условно можно разделить на четыре категории: органы управления главного окна (панель инструментов, окно подсказки, строка состояния), составные диалоговые органы управления (страница свойств, набор страниц свойств), органы управления Windows Explorer (дерево просмотра, список просмотра) и другие органы управления (например, горячая клавиша, индикатор процесса, окно с движком для выбора значения из диапазона). Как дочерние окна управления, так и органы управления общего пользования часто используются при создании Windows‑приложений.
Важной особенностью OC Windows является многозадачность. Под Windows 95 любая программа становится резидентной и несколько программ одновременно могут иметь вывод на экран и выполняться. Кроме того, программы сами по себе могут иметь несколько потоков выполнения, которые, как кажется, выполняются параллельно. В основе этого принципа лежит использование ОС аппаратного таймера для распределения процессорного времени между одновременно выполняемыми процессами. [4]
К основным преимуществам ОС Windows 95 относятся следующие:
à улучшенный интерфейс;
à более простое управление файлами, включая поддержку сетевых связей и длинных имен файлов;
à технология Plug and Play автоматически определяет и настраивает дополнительные устройства, подключаемые к компьютеру;
à 32 – битная многозадачная среда позволяет одновременно работать нескольким программам;
à улучшенные средства поиска;
à улучшенная поддержка мультимедиа;
à расширенные возможности установления связей, включая электронную почту, факсы, электронные доски объявлений, Internet;
à управление процессом печати документов.
Рассмотрим более подробно процесс создания прикладной программы Windows.
Прикладная программа Windows – это любая программа, которая специально написана для работы в операционной среде Windows и использующая интерфейс прикладной программы (API).
Прикладная программа Windows имеет следующие основные компоненты: основную функцию WinMain; т.н. «оконную процедуру» – функцию WndProc.
WinMain – это точка входа в программу. В любой программе для Windows имеется функция WinMain, она определяется следующим образом:
integer function WinMain (hInstance, hPrevInstance, &
lpszCmdLine, nCmdShow).
hInstance – дескриптор (описатель, хэндл) экземпляра. Это уникальное число, идентифицирующее программу, когда она работает под Windows;
hPrevInstance – дескриптор предыдущего экземпляра программы. Под Windows 95 этот параметр всегда NULL;
lpszCmdLine – указатель на оканчивающуюся нулем строку, в которой содержатся любые параметры, переданные в программу из командной строки.
nCmdShow – число, показывающее, каким должно быть выведено на экран окно в начальный момент.
В большинстве случаев эта функция делает следующее:
à вызывает функции инициализации, которые регистрируют классы окон, создают окна и выполняют другие инициализации;
à запускает цикл обработки сообщений из очереди прикладной программы;
à завершает работу программы.
WndProc – это функция многократного вызова, т.е. функция программы, которую вызывает Windows. Сама программа никогда не вызывает эту функцию напрямую. Каждое окно имеет соответствующую оконную процедуру. Оконная процедура – это способ инкапсулирования кода, отвечающего за ввод информации и за вывод информации на экран, что реализуется путем посылки «сообщений» окну.
В процессе создания главного окна программы условно можно выделить четыре этапа:
1) регистрация класса главного окна;
2) создание главного окна;
3) отображение и корректировка главного окна;
4) организация цикла сообщений.
Рассмотрим подробнее каждый из этапов.
Регистрация класса окна.
Окно всегда создается на основе класса окна. Класс окна идентифицирует оконную процедуру, которая выполняет процесс обработки сообщений, поступающих окну, а также определяет некоторые атрибуты окна, уникальные для него, такие, например, как форма курсора и имя меню окна. На основе одного класса окна можно создать несколько окон.
Перед созданием окна для программы необходимо зарегистрировать класс окна путем вызова функции RеgisterСlаss:
ret = RеgisterСlаss (lpwc).
ret – целочисленная переменная, содержащая возвращаемое функцией значение;
lpwc – указатель на структуру типа T_WNDCLASS, содержащую в своих двенадцати полях информацию об имени, атрибутах, ресурсах и функции окна данного класса.
Заполнение структуры и регистрация класса окна производятся в WinMain. Если регистрация прошла успешно, функция возвращает число, идентифицирующее регистрируемый класс. В противном случае она возвращает ноль.
Создание окна.
Окно создается с помощью функции СreateWindowEx (она отличается от аналогичной функции CreateWindow возможностью задания «расширенного» стиля окна и наличием параметра, используемого в качестве указателя на какие-то данные, на которые программа в дальнейшем могла бы ссылаться). Эта функция побуждает Windows создать окно, которое имеет указанный тип и принадлежит к определенному классу. Вызов функции СreateWindowEx осуществляется следующим образом:
hWnd = CreateWindowEx (&
INT4 (WS_EX_DLGMODALFRAME), ! «расширенный» стиль окна &
lpszClassName, ! Имя класса окна &
lpszAppName, ! Заголовок главного окна &
INT4 (WS_OVERLAPPEDWINDOW), ! Стиль окна &
0, ! X – координата левого верхнего угла &
0, ! Y – координата верхнего левого угла &
GetSystemMetrics (SM_CXSCREEN) – 32, ! Ширина окна &
GetSystemMetrics (SM_CYSCREEN) – 32, ! Высота окна &
NULL, ! Дескриптор родительского окна &
hMenu, ! Дескриптор меню окна &
hInstance,! Дескриптор экземпляра &
NULL) ! Параметры создания
Параметр с комментарием «имя класса окна» содержит строку, являющуюся именем только что зарегистрированного класса окна («Krs_w»). Т.о., этот параметр связывает окно с классом окна.
«Заголовок главного окна» содержит текст, который появляется в строке заголовка («Компоновщик расчетных схем»).
Окно, созданное программой, является обычным перекрывающимся окном с заголовком, системным меню, главным меню, иконками для сворачивания, разворачивания и закрытия окна справа на строке заголовка и рамкой окна (стандартный стиль окон WS_ОVЕRLАРРЕDWINDOW). Из предлагаемого ОС Windows набора «расширенных» стилей выбран стиль WS_EX_DLGMODALFRAME, добавляющий окну двойную рамку.
Параметр с комментарием «дескриптор родительского окна» устанавливается в NULL, т. к. у нашего окна отсутствует родительское окно. Параметр hMenu содержит дескриптор меню окна. В параметр hInstance помещается дескриптор экземпляра программы, переданный программе в качестве параметра функции WinMain. Параметр с комментарием «параметры создания» при необходимости используется в качестве указателя на какие-нибудь данные, на которые программа в дальнейшем могла бы ссылаться (в рассматриваемой программе такие данные не используются – параметр установлен в NULL).