Программирование Win32API. Введение.
DLL & API
Как и всякая уважающая себя система программирования для среды Windows,
Visual Basic позволяет обращаться к API-функциям, содержащимся в DLL-библиотеках.
Точно так же, конечно, можно обращаться и к любым другим DLL-функциям
— механизм обращения при этом не меняется.
Синтаксис объявления API-функции
Прежде чем можно будет обратиться к функции из DLL-библиотеки, ее необходимо
объявить. Это делается с помощью оператора Declare, два варианта синтаксиса
которого будут приведены ниже. Первый вариант относится к объявлению
процедуры (DLL-функция не возвращает значения), второй — к объявлению
DLL-функции, которая возвращает значение. При объявлении DLL-функций
следует учитывать ряд обстоятельств:
- Если DLL-функция объявляется с помощью оператора Declare в модуле
формы, то она должна объявляться как Private. В программном модуле,
напротив, DLL-функция должна объявляться, как Public.
- Чтобы избежать конфликта имен (когда имя DLL-функции совпадает
с одним из зарезервированных слов), следует использовать зарезервированное
слово Alias в объявлении функции — таким образом можно задать псевдоним
для DLL-функции.
- API-функции используют типы данных языка С, поэтому параметры
при вызове API функций следует задавать с учетом совместимости типов
С и Visual Basic.
Итак, вот обещанный синтаксис:
[Private/Public]
Declare Sub Имяфункции Lib "ИмяDLL-файла" [Alias "Псевдоним"]
[([СписокПарамегров])]
[Private/Public] Declare Function Имяфункции Lib "ИмяDLL-файла"
[Alias
"Псевдоним"] [([СписокПараметров}]] As ИмяТипа
Рассмотрим каждый параметр:
- Имяфункции. Имя функции или процедуры, под которым она будет доступна
в коде Visual Basic-программы. Используют настоящие имена функций
(как они определены в DLL-библиотеке) или псевдонимы, которые должны
быть определены с помощью зарезервированного слова Alias.
- ИмяDLL-файла. Имя DLL-файла библиотеки, где содержится объявляемая
функция.
- СписокПарамегров. Параметры функции или процедуры. Типы параметров
должны быть совместимыми с С-типами, используемыми в API-функциях.
- ИмяТипа. Определяет тип возвращаемого функцией значения.
Пример:
Эта ф-ция предназначена для копирования изображения с одного контекста
устройства на другой.
Declare
Function
BitBlt Lib "gdi32" _
(ByVal hDestDC As
Long, ByVal x As
Long, ByVal y As
Long, _
ByVal nWidth As Long,
ByVal nHeight As
Long, _
ByVal hSrcDC As Long, ByVal
xSrc As Long, ByVal
ySrc As Long, _
ByVal dwRop As Long)
As Long
|