Работа с функциями интерфейса прикладных программ.




Использование графических функций API - WINDOWS

Понятие функций API – Windows. Понятие DLL-файлов.

Windows вообще представляет собой набор функций, с помощью которых можно получить доступ к операционной системе и ее возможностям. Большое преимущество состоит в том, что эти функции стандартизированы. Например, при печати всегда происходит обращение к одному и тому же набору функций независимо от того, какая модель принтера используется.

Такой механизм Windows носит название «прикладного программного интерфейса» API (Application Programming Interface).Примером интерфейсов прикладных программ может служить ODBC API (Open Database Connectivity - комплекс интерфейсов для доступа к базам данных, встроенных в ОС Windows) и др.

Вообще, функции API - это самые разнообразные функции самой операционной системы. Для всего, что умеет операционная система, есть некая API-функция, одна или несколько.

Например, Windows «умеет» создавать окна, для этого есть функция API, которая называется CreateWindow. Windows «умеет» выключаться, для этого существует API-функция ExitWindows.

Поскольку API-функции являются функциями самой операционной системы Windows, то если только установить на компьютер Windows, то тем самым имеются уже все API-функции. Кроме того, они, в общем-то, не зависят от использующих их сред разработки приложений.

Весь интерфейс Windows реализован в виде набора файлов DLL. API-функции находятся в разных DLL –файлах (DLL —динамически загружаемая библиотека, представляющая собой файл, содержащий набор функций). Файлы DLL — не исполняемые файлы; они могут лишь использоваться другими программами, которые обращаются к содержащимся в них функциям. Таким образом, DLL - это библиотеки функций, которые при необходимости могут вызываться для выполнения.

Использование библиотечных функций имеет некоторые преимущества. Во-первых, несколько приложений могут обращаться к одной и той же функции, которую уже не надо включать в каждый исполняемый файл, за счет чего приложения становятся меньше.

 

Во-вторых, преимущество состоит в том, что при модульном построении приложения отдельные библиотеки легче обновлять или расширять, не переустанавливая при этом всю систему заново.

Возможность подключения внешних функций почти полностью отменяет какие-либо ограничения Visual Basic. Если нужную функцию нельзя реализовать в Visual Basic, можно обратиться к подходящей библиотеке Windows.

Графические функции из состава API Windows объединены в отдельную группу - подсистему GDI (Graphic Device Interface). Важная черта подсистемы GDI – аппаратная независимость большинства функций от конкретного графического устройства.

Графические API – функции содержаться в файле GDI32.DLL.

Особенности использования API – функций Windows.

1. В системе Windows все элементы управления называются объектами. У каждого объекта имеется свой дескриптор (handle), являющийся указателем на этот объект. Но указатель – это просто адрес объекта, а дескриптор – разновидность указателя.

При использовании графических API – функций Windows необходимо учитывать понятия:

· дескрипторовокна (handle window, hWND);

· дескрипторов объекта (handle object, hOBJ);

· дескрипторов контекста устройства (handle device context, hDC).

 

Дескрипторы окна

Все элементы управления в Visual Basic во время выполнения обладают свойством hWnd, в которомсодержится текущий дескриптор.

Под hWnd понимаются такие элементы как форма, кнопки, панели и т.д. (на языке программного интерфейса Windows все элементы управления как объекты являются окнами), с помощью этого дескриптора элементам передаются сообщения и данные.

В системе Windows все элементы управления называются объектами (на языке программного интерфейса Windows все объекты являются окнами), т.е. имея дело с объектами, мы должны обращаться к их адресу – дескриптору. Подобно тому, как в VB переменная может служить средством обращения к форме или кнопке (переменная – свойство Name), дескриптор объекта является указателем на объект в интерфейсе прикладных программ.

У всех элементов управления VB и объектов есть свойство hWnd, возвращающее дескриптор элемента управления или объекта.

 

Дескрипторы объекта

Дескриптор объекта – это независимое понятие, оно может существовать отдельно от hWND и hDC (эти работают в паре). К дескрипторам объекта относятся перья системы рисования, кисть, заполняющая область и т.д.

Для осуществления операций с использованием API – Windows всегда нужно затребовать какой-либо дескриптор.

 

2. Различные драйверы позволяют Windows осуществлять вывод информации на устройства различных типов, такие как мониторы и принтеры. Связь между Windows и конкретным устройством называется контекстом устройства, именно он указывает место графического вывода.

Контекст устройства может быть определен как структура, которая определяет набор графических объектов, их свойств и способов воздействия на объект.

Графические объекты включают:

· перо (pen) для линии;

· кисть (brush) для заполнения;

· битовая плоскость (bitmap) для копирования или прокручивания частей экрана;

· палитра (palette) для определения набора доступных цветов;

· регион (region) для усечения областей и других действий.

 

Если программа делает вызов графических функций API Windows, та­ких как рисование точек, линий, фигур, текста и тому подобных, необходимо указывать дескриптор (идентификатор) контекста устройства (handle of device context) и координаты изображаемых объектов. Вызов же необходимого драйвера — для экрана дисплея, принтера или другого устройства — делает уже сама Windows. Это в значительной мере освобож­дает программиста от второстепенных дел и облегчает разработку программ, однако желательно учитывать специфику работы конкретного устройства.

Иными словами, если используется интерфейс прикладных программ Windows для вывода графики, то необходимо обратиться к соответствующему идентификатору (ID) контекста устройства. У каждой формы Visual Basic есть связанный с ней контекст устройства, определяемый свой­ством hdc.

Если объект может служить контейнером, т.е. в его окне можно выводить информацию, то и у него должно быть свойство hdc. К таким объектам относятся, в частности, UserControl, UserDocument, PictureBox и PropertyPage. Кроме того, свойство hdc есть у объектов Printer и CommonDialog (оно возвращает контекст устройства текущего принтера).

 

Контекст графического устройства

 

Контекст графического устройства (Device Context)— это важный элемент графики в среде операционной системы Windows. Понятие контекста введено для описания того, где будет рисоваться изображение.

Другими словами контекст графического устройства указывает плоскость отображения, на которую делается графический вывод. В качестве контекста может быть окно программы на экране дисплея или страница принтера, или другое место, куда можно направить графический вывод.

 

Идентификатор контекста графического устройства (hdc) — это числовое значение, знание которого дает возможность направить графический вывод в нужное место. Перед началом рисования необходимо получить это числовое значение. После рисования обычно нужно освободить, деактивизировать контекст. Несоблюдение этого требования чревато неприятными последст­виями — от утечек памяти до прекращения нормальной работы программы.

Корректное использование контекста графического устройства осуществля­ется в такой последовательности:

1. Создание, активизация контекста, получение значения hdc.

2. Рисование с помощью графических функций API Windows.

3. Уничтожение, деактивизация контекста соответствующего hdc.

 

Работа с функциями интерфейса прикладных программ.

Работа с внешними функциями интерфейса прикладных программ в Visual Basic осуществляется в два этапа:

1) Сначала должна быть объявлена функция, к которой на следующем этапе производится обращение.

2) Вызов и использование API- функций. Для обращения к функциям DLL следует сначала определить, как называется требуемая функция, в какой DLL она находится и каких параметров требует.

 

Инструкция DECLARE

 

Для того, чтобы иметь возможность пользоваться API- функциями Windows, необходимо учитывать следующее.

Экспортируемой функцией называется такая функция или процедура, прототип которой виден для других программ. Прототип – это объявление функции или процедуры, схожее с объявлением, которое дается функции или процедуре в приложениях VB 6.0. Он определяет имя функции (или процедуры), ее аргументы и их типы, а так же тип возвращаемого значения, если таковое имеется.

Внешняя функция объявляется в Visual Basic в отдельной строке в разделе (General)(Declarations) формы, модуля или класса. Для создания прототипа применяется оператор Declare.

Синтаксис объявления зависит от вида внешней функции, которая будет вызвана. Если речь идет о функции, возвращающей в Visual Basic значение, используется строка с зарезервированным словом Function. Если же вызывается процедура, не имеющая возвращаемого значения, используется зарезервированное слово Sub.

Private | Public Declare Function fancName Lib "libName" _

[Alias "aliasName" ] ([ argList ]) As returnType

Private | Public Declare Sub subName Lib " libName " _

[Alias "AliasName" ] ([ argList ])

Разумеется, слова Private и Public являются взаимоисключающими и задают область видимости подпрограммы или функции. Если подпрограмма или функция объявляется с использованием модификатором доступа Public, то к ней могут обращаться все модули. Если же она объявляется с ключевым словом Private, то к ней возможен доступ только из того модуля, в котором она объявлена. У объявления не может быть локальной области видимости.

 

Идентификаторы fancName и subName – имена, под которыми Вы будете обращаться к вызываемой функции или подпрограмме.

 

Ключевое слово Lib используется для указания VB, в каком DLL – файле следует искать данную функцию интерфейса прикладных программ.

 

LibName - имя библиотеки, в которой находится данная функция. Системные библиотеки Windows (dll-файлы) при этом называются сокращенно "Kernel32", "User32" или "GDI32".

 

Например:

Declare Function SetPixel Lib "gdi32" _

(ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

 

Если внешняя функция носит имя, которое вы не хотите или не можете использовать в Visual Basic (если оно совпадает с каким-либо зарезервированным словом), к этой функции можно обращаться по другому имени. Для этого перед словом Lib указывается имя функции, которое будет использоваться в Visual Basic, а в обраще­нии после имени библиотеки следует поставить зарезервированное слово Alias, и за ним в кавычках — имя функции, которое она носит в библиотеке DLL.

 

Declare Function Point Lib "gdi32" Alias _

" SetPixel " (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

В результате выполнения этого примера к функции, хранящейся в DLL под именем SetPixel, обращение из Visual Basic будет производиться по имени Point.

 

При передаче аргументов аргументы должны передаваться в той последовательности, в какой они ожидаются. Если последовательность не соблюдается, может возникнуть ошибка.

ByVal – ключевое слово, которое обозначает, что вы передаете вызываемой программе копию переменной (переменная, передаваемая по значению).

ByRef – ключевое слово, которое сообщает транслятору, что вы передаете адрес переменной.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: