Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Системное программирование. Архитектура 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-23; Просмотров: 743; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.