Синтаксис функций Windows API


Большая часть функций API уже импортирована в среду Delphi и описана в ее модулях, их вызов практически ничем не отличается от вызова любых других функций Delphi. Если же функция отсутствует в Delphi, то ее можно импортировать из соответствующей DLL с помощью существующего механизма импорта функций (см. разд. "Импортирование функций Windows API" в данной главе). Так как система Windows написана на Си, то все описания функций Windows API даны в DLL на языке С, а не на языке Pascal. Для перевода функции в Delphi необходимо знать синтаксис описания функций в языке Си.

Описание функции в Си имеет вид:

<Тип функции> <Имя функции>(<Тип параметра> <Имя параметра>,

<Тип параметра> <Имя параметра>, ...);

В Си различаются верхний и нижний регистр, и идентификаторы HDC, hdc, hDC — для Си являются разными. Поэтому часто можно встретить фразу о том, что имя параметра и его тип совпадают с точностью до регистра. Конечно, в Pascal это уже не имеет значения.

Например, в Си функция:

HMETAFILE CopyMetaFile(HMETAFILE hmfSrc, LPCTSTR IpszFile); в Delphi может иметь вид:

function CopyMetaFile(hmfSrc: HMETAFILE; IpszFile: LPCTSTR : HMETAFILE; или

function CopyMetaFile(hmfSrc: HMetaFile; IpszFile: PChar): HMetaFile;

Некоторое отличие имеет тип void. Если функция указан тип void , то в языке Pascal такая функция была бы описана как процедур. Если вместо параметров у функции в скобках стоит void, это означает, что функция не имеет параметров. Например, Си-функция:

VOID CloseLogFile(VOID); в Delphi описывается как:

procedure CloseLogFile;

Примечание

Не путайте void и pvoid. pvoid — это нетипизированный указатель, соответствующий типу Pointer.

В тех случаях, когда тип параметра является указателем на другой тип (обычно начинается с букв LP), при описании этой функции в Delphi можно пользоваться параметром-переменной, т. к. функции передается указатель. Например, функция:

int GetRgnBox(HRGN hrgn, LPRECT lprc);

в файле Windows.pas описана так:

function GetRgnBox(RGN: HRGN; var p2: TRect): Integer;

 


Читайте также

Сообщения (часть 3)

(ниже представлена обработка сообщения wm_move...

Сообщения (часть 4)

При обработке сообщений часто приходится сталкиваться с ситуациями, когда один 32-разрядный…

Параметры функции

Подавляющее количество Windows API-функций использует переданные им статические параметры…

Импортирование функций Windows API

Если вызываемая функция API не описана в среде Delphi, то ее необходимо предварительно…

Нестандартно импортируемые функции

Некоторые функции импортируются в исходный код Delphi нестандартно. Они являются исключениями



Комментарии (0)







Разрешённые теги: <b><i><br>Добавить новый комментарий: