Функции обратного вызова


Другое очень важное понятие в Windows-программировании - это понятие функции обратного вызова (callback-функции). Функцией обратного вызова называется функция приложения, которая никогда не вызывается напрямую другими функциями или процедурами этого приложения (хотя ничто не за­прещает это делать), а вызывается операционной системой Windows. Это по­зволяет Windows общаться с приложением напрямую посредством различных параметров, определенных как функции обратного вызова. К этим функциям выдвигаются требования: во-первых, эти функции должны быть именно функциями, а не методами класса (хотя это иногда можно обойти); во-вторых, эти функции должны быть написаны в соответствии с моделью вызова stdcall.

В качестве примера такой функции может послужить функция EnumWindows. В справочной системе она описана следующим образом:

BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam);

В Windows.pas она имеет вид:

function EnumWindows (lpEnumFunc: TFNWndEnumProc; lParam: LPARAM : BOOL;

stdcall

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

BOOL CALLBACK EnumWindowsProc (HWND hwnd LPARAM lParam);

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

Пример функции обратного вызова для случая, когда второй параметр имеет тип Longint, будет в Delphi выглядеть так:

function MyCallbackFunction (Wnd: Hwnd; P: Longint) :Bool; stdcall; begin

{ что-то делается } end;

var

MyVar: Longint;

EnumWindows(@MyCallbackFunction, Longint(MyVar));


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

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

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

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

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

Использование справочной системы по функциям Windows API

Функций Windows API неисчислимое множество, что их просто невозможно запомнить впрочем,…

Использование справочной системы по функциям Windows API (продолженжие))

Overview — это аннотация какой-то большой темы. К примеру, для любой функции, работающей…



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

  1. Pr.Snake:
    Фев 21, 2017 at 10:36

    Сколько можно воровать свои статьи? Укажите имя автора учебного пособия из которого вы это вырвали! Не путайте людей!







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