В предыдущих главах мы изучали возможности языка С# на примере консольных приложений, чтобы не распылять свое внимание на изучение классов библиотеки.NET, поддерживающих стандартный графический интерфейс пользователя. Сейчас пришло время освоить принципы создания Windows-приложений и получить представление об основных классах библиотеки, которые при этом используются. В первую очередь рассмотрим основные особенности Windows как характерного и широко распространенного представителя современных операционных систем.
□ Многозадачность — это возможность одновременно выполнять несколько при
ложений. Операционная система обеспечивает разделение ресурсов: каждому
приложению выделяется свое адресное пространство, распределяется процес
сорное время и организуются очереди для доступа к внешним устройствам.
Внутри приложения также можно организовать параллельное выполнение
нескольких фрагментов, называемых потоками. В разных версиях Windows
используются различные механизмы диспетчеризации.
|
|
□ Независимость программ от аппаратуры. Для управления аппаратными сред
ствами любое приложение обращается к операционной системе, что обеспе
чивает независимость от конкретных физических характеристик устройств:
при смене устройства никакие изменения в программу вносить не требуется.
Управление внешними устройствами обеспечивается с помощью драйверов.
□ Стандартный графический интерфейс с пользователем. Основное взаимодействие с пользователем осуществляется в графическом режиме. Каждое приложение выполняет вывод в отведенную ему прямоугольную область экрана, называемую окном. Окно состоит из стандартных элементов. Это упрощает освоение программ пользователем и облегчает работу программиста, поскольку в его распоряжение предоставляются библиотеки интерфейсных компонентов. Такие библиотеки входят в состав систем программирования.
Интерфейсные компоненты обращаются к аппаратуре не непосредственно, а через функции операционной системы, называемые API (Application Program Interface — программный интерфейс приложения). API-функции находятся в динамических библиотеках (Dynamic Link Library, DLL), разделяемых всеми приложениями. Эти библиотеки называются динамическими потому, что находящиеся в них функции не подключаются к каждому исполняемому файлу до выполнения программы, а вызываются в момент обращения к ним.
В основе пользовательского интерфейса Windows лежит представление экрана как рабочего стола, на котором располагаются «листы бумаги» — окна приложений, ярлыки и меню. Одни элементы могут полностью или частично перекрывать другие, пользователь может изменять их размеры и перемещать их. Приложение может иметь несколько окон, одно из них является главным. При закрытии главного окна приложение завершается.
|
|
□ Поддержка виртуального адресного пространства для каждого приложения.
Каждому приложению доступно пространство адресов оперативной памяти
размером до 4 Гбайт (имеются в виду 32-разрядныеприложения, то есть приложения, в которых используется адрес длиной 32 разряда). Операционная система отображает его на физические
адреса и обеспечивает защиту приложений друг от друга. В разных версиях
Windows защита выполняется с различной степенью надежности, например,
системы Windows 95/98 гораздо менее надежны, чем Windows NT/2000.
□ Возможность обмена данными между приложениями. Приложения могут об
мениваться данными через буфер обмена или используя другие механизмы,
например OLE (Object Linking and Embedding — связывание и внедрение
объектов) или именованные программные каналы.
□ Возможность запуска старых программ. В 32-разрядных версиях Windows
можно выполнять 16-разрядные Windows-программы, а также программы, на
писанные под MS-DOS. Последние запускаются в так называемой виртуаль
ной DOS-машине, которая создает у программы полное «впечатление» того,
что она выполняется под управлением MS-DOS в монопольном режиме.
□ Принцип событийного управления (рассматривается в следующем разделе).