Составители:
Рубрика:
Перед изучением технологии использования шаблонов для создания Windows-
приложений, необходимо рассмотреть принципы работы операционной системы Win-
dows и ее взаимодействия с прикладными программами.
Благодаря
интерфейсу вызова функций в Windows доступ к системным ресурсам
осуществляется через целый ряд системных функций. Совокупность таких функций на-
зывается прикладным программным интерфейсом, или API (Application Programming In-
terface). Для взаимодействия с Windows приложение запрашивает функции API, с помо-
щью которых реализуются все необходимые системные действия, такие как выделение
памяти, вывод на экран, создание окон и т.п.
Поскольку API состоит из большого числа функций, может сложиться впечатле-
ние, что при компиляции каждой программы, написанной для Windows, к ней подклю-
чается код довольно значительного объема. В действительности это не так. Функции API
содержатся в
библиотеках динамической загрузки (Dynamic Link Libraries, или DLL),
которые загружаются в память только в тот момент, когда к ним происходит обращение,
т.е. при выполнении программы. Динамическая загрузка обеспечивает ряд существен-
ных преимуществ.
Во-первых, поскольку практически все программы используют API-функции, то
благодаря DLL-библиотекам существенно экономится дисковое пространство, которое в
противном случае занималось бы большим количеством повторяющегося кода, содер-
жащегося в каждом из исполняемых файлов.
Во-вторых, изменения и улучшения в Windows-приложениях сводятся к обновле-
нию только содержимого DLL-библиотек. Уже существующие тексты программ не тре-
буют перекомпиляции.
В настоящее время наибольшее распространение получила версия API, которая по-
лучила название Win32. Данная версия API пришла на смену версии Win16, используе-
мой в Windows 3.1. Фактически 32-разрядная Win32, используемая в операционных сис-
темах линейки 9x, является надмножеством для Win16 (т.е. фактически включает в себя
этот интерфейс), так как большинство функций имеет то же название и применяется
аналогичным образом. Однако, будучи в принципе похожими, оба интерфейса все же
отличаются друг от друга. Win32 поддерживает 32-разрядную линейную адресацию, то-
гда как Win16 работает только с 16-разрядной сегментированной моделью памяти. Это
привело к тому, что некоторые функции были модифицированы таким образом, чтобы
принимать 32-разрядные аргументы и возвращать 32-разрядные значения. Часть из них
пришлось изменить с учетом 32-разрядной архитектуры. Была реализована поддержка
потоковой многозадачности, новых элементов интерфейса и прочих нововведений Win-
dows 9x. Win32 операционной системы линейки NT уже полностью 32-разрядная и су-
щественно отличается от Win32 Windows 9x.
Так как Win32 поддерживает полностью 32-разрядную адресацию, то логично, что
целые типы данных (integers) также объявлены 32-разрядными. Это означает, что пере-
менные типа int и unsigned будут иметь длину 32 бита, а не 16, как в Windows 3.1 или
DOS. Если же необходимо использовать переменную или константу длиной 16 бит, они
должны быть объявлены как short (далее будет показано, что для этих типов определены
независимые typedef-имена.). Следовательно, при переносе программного кода из 16-
разрядной среды необходимо убедиться в правильности использования целочисленных
элементов, которые автоматически будут расширены до 32 битов, что может привести к
появлению побочных эффектов.
Другим следствием 32-разрядной адресации является то, что указатели больше не
нужно объявлять как near и far. Любой указатель может получить доступ к любому уча-
стку памяти. В современных ОС Windows константы near и far объявлены (с помощью
директивы #define) пустыми.
Одним из подмножеств API является GDI (Graphics Device Interface – интерфейс
графического устройства). GDI – это та часть Windows, которая обеспечивает поддержку
170
Перед изучением технологии использования шаблонов для создания Windows- приложений, необходимо рассмотреть принципы работы операционной системы Win- dows и ее взаимодействия с прикладными программами. Благодаря интерфейсу вызова функций в Windows доступ к системным ресурсам осуществляется через целый ряд системных функций. Совокупность таких функций на- зывается прикладным программным интерфейсом, или API (Application Programming In- terface). Для взаимодействия с Windows приложение запрашивает функции API, с помо- щью которых реализуются все необходимые системные действия, такие как выделение памяти, вывод на экран, создание окон и т.п. Поскольку API состоит из большого числа функций, может сложиться впечатле- ние, что при компиляции каждой программы, написанной для Windows, к ней подклю- чается код довольно значительного объема. В действительности это не так. Функции API содержатся в библиотеках динамической загрузки (Dynamic Link Libraries, или DLL), которые загружаются в память только в тот момент, когда к ним происходит обращение, т.е. при выполнении программы. Динамическая загрузка обеспечивает ряд существен- ных преимуществ. Во-первых, поскольку практически все программы используют API-функции, то благодаря DLL-библиотекам существенно экономится дисковое пространство, которое в противном случае занималось бы большим количеством повторяющегося кода, содер- жащегося в каждом из исполняемых файлов. Во-вторых, изменения и улучшения в Windows-приложениях сводятся к обновле- нию только содержимого DLL-библиотек. Уже существующие тексты программ не тре- буют перекомпиляции. В настоящее время наибольшее распространение получила версия API, которая по- лучила название Win32. Данная версия API пришла на смену версии Win16, используе- мой в Windows 3.1. Фактически 32-разрядная Win32, используемая в операционных сис- темах линейки 9x, является надмножеством для Win16 (т.е. фактически включает в себя этот интерфейс), так как большинство функций имеет то же название и применяется аналогичным образом. Однако, будучи в принципе похожими, оба интерфейса все же отличаются друг от друга. Win32 поддерживает 32-разрядную линейную адресацию, то- гда как Win16 работает только с 16-разрядной сегментированной моделью памяти. Это привело к тому, что некоторые функции были модифицированы таким образом, чтобы принимать 32-разрядные аргументы и возвращать 32-разрядные значения. Часть из них пришлось изменить с учетом 32-разрядной архитектуры. Была реализована поддержка потоковой многозадачности, новых элементов интерфейса и прочих нововведений Win- dows 9x. Win32 операционной системы линейки NT уже полностью 32-разрядная и су- щественно отличается от Win32 Windows 9x. Так как Win32 поддерживает полностью 32-разрядную адресацию, то логично, что целые типы данных (integers) также объявлены 32-разрядными. Это означает, что пере- менные типа int и unsigned будут иметь длину 32 бита, а не 16, как в Windows 3.1 или DOS. Если же необходимо использовать переменную или константу длиной 16 бит, они должны быть объявлены как short (далее будет показано, что для этих типов определены независимые typedef-имена.). Следовательно, при переносе программного кода из 16- разрядной среды необходимо убедиться в правильности использования целочисленных элементов, которые автоматически будут расширены до 32 битов, что может привести к появлению побочных эффектов. Другим следствием 32-разрядной адресации является то, что указатели больше не нужно объявлять как near и far. Любой указатель может получить доступ к любому уча- стку памяти. В современных ОС Windows константы near и far объявлены (с помощью директивы #define) пустыми. Одним из подмножеств API является GDI (Graphics Device Interface – интерфейс графического устройства). GDI – это та часть Windows, которая обеспечивает поддержку 170
Страницы
- « первая
- ‹ предыдущая
- …
- 168
- 169
- 170
- 171
- 172
- …
- следующая ›
- последняя »