Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Системное программирование. Архитектура Windows-программ



Как известно, все приложения запускаются под управлением ОС, поэтому с позиции прикладной программы ОС Windows представляет собой совокупность системных функций, формирующих интерфейс прикладных программ- Win32 API (Application Programming Interface). Win32 API состоит из функций, структур, констант и сообщений, позволяющих непосредственно создавать приложения Windows и управлять ими. Так, чтобы выполнить те или иные действия (например, открыть окно и отобразить текст или графику), Ваша программа должна обратиться к соответствующим функциям Win32 API напрямую или подключить к проекту элементы ActiveX, взяв их спанели GeneralToolBox, в которых могут встречаться ссылки на функции Win32API. Следует отметить, что прямое обращение к функциям Win32 API увеличивает быстродействие приложения. Программный код этих функций образует ядро ОС, который слишком велик по объему и не может целиком размещаться в оперативной памяти, поэтому большая часть функций остается на диске в библиотеках динамической компоновки и загружается в память по мере надобности по их вызовам из прикладной программы. Способ загрузки библиотечных функций может быть статическим (в дальнейшем именно с ним нам предстоит работать) и динамическим.

В состав ядра входит более 1000 функций. Основные из них размещены в трех динамических библиотеках: KRNL386.EXE, USER.EXE, GDI.EXE. Ядро MS DOS, как известно, формируется из файлов IO.SYS иMSDOS.SYS.KRNL386.EXE управляет памятью и загрузкой прикладных программ. USER.EXE содержит функции создания и управления окнами(перемещение, изменение размеров, удаление), управляет иконками и курсорами, обрабатывает сообщения с клавиатуры, мыши и других пользовательских приложений. Эти функции позволяют приложениям организовать более эффективную обработку событий мыши посравнению с возможностями, предоставляемыми VisualBasic. GDI.EXE (GraphicsDeviceInterface) содержит функции графического вывода.

Единственным отличием API-функций Windows от обычных функций Visual Basic является необходимость объявлять их перед использованием (статическая загрузка) с помощью оператора Declare. По сути, требуется сообщить Visual Basic имя и местоположение DLL-библиотеки (user32.dll, gdi32.dll, kernel32.dll), в которой находится ссылка(заголовок) на API-функцию ядра ОС или описание самой функции. Синтаксис объявления API-функции следующий. [Public| Private] DeclareFunction Имя Функции Lib "Имя Библиотеки" [Alias"псевдоним"] ([Список Аргументов])] [As Type] Объявления API-функций должны размещаться в общей области GD модуля. Если Вы размещаете его в модуле формы, то обязательно нужно указать ключевое. Слово Private (чтобы данное объявление было доступно только внутри модуля). Это требование касается и всех подпрограмм, размещенных в модуле формы. Набор Win32 API реализован только в виде функций. В большинстве своем это функции типа Long, которые чаще всего возвращают код завершения операции. Причем не нулевое значение означает нормальное завершение, нулевое - ошибку. В Win32 API чаще всего используется передача параметров по значению (ByVal), то есть выполняется односторонняя передача данных -от VB-программы к API-функции. В качестве типов параметров, кроме известных, могут использоваться и новые.•... As Any означает, что в стек будет помещен не который адрес буфера памяти. Тип Any может использоваться только в операторе Declare, а Фактический параметр при вызове функции должен иметь конкретный тип.•... As User Defined Type означает, что требуется обменяться данными(в обе стороны) с помощью некоторой структуры. Такая конструкция всегда используется без слова By Val, то есть в данном случае выполняется передача по ссылке, то есть в стек записывается адрес переменной. Некоторые API-функции начинаются с символа подчеркивания, что недопустимо для VB. Поэтому для обращения к таким функциям их имя следует указать в поле «псевдонима» за ключевым словом Alias. Вызов API-функции аналогичен вызову любой обычной функции VB, то есть ее можно вызвать операторным(бесскобочным) или скобочным способом.





Дата публикования: 2014-12-28; Прочитано: 329 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...