Access 2002

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


Некоторым функциям Windows для выполнения требуется функция с обратным вызовом. Обычно Windows предоставляет функции для нужд вашего приложения. Но бывает и так, что вызванная вами функция Windows должна выполнить обратный вызов: вызвать вашу функцию. В таком случае ваша функция называется функцией с обратным вызовом. Windows может вызывать ее несколько раз, передавая ей какие-то данные, например ссылку на объект в своей внутренней структуре. Обратные вызовы выполняет, в частности, функция EnumWi ndows Она вызывает вашу функцию по одному разу для каждого открытого окна верхнего уровня и передает ей дескриптор этого окна, пока ваша программа не получит таким образом дескрипторы всех открытых окон. В объявлении на языке С аргумент, в котором задается адрес функции с обратным вызовом, имеет тип данных FARPR0C или CALLBACK.

До Office 2000 VBA не поддерживал в приложениях функции с обратным вызовом, хотя в Visual Basic 5 эта возможность была. VBA 6 унаследовал ее от Visual Basic, и теперь оба продукта допускают обратные вызовы. База данных CH14.MDB содержит форму frmEnumFonts и модуль basCa 11 back, демонстрирующие методики создания и использования функций с обратным вызовом, а также способ применения модификатора VBA AddressOf для передачи Windows адреса функции с обратным вызовом.

Модификатор AddressDf (используемый в вызовах Windows API) позволяет получить адрес процедуры по ее имени. Процедура должна быть объявлена с ключевым словом Public и должна находиться в стандартном модуле. Так ваша программа передает этот адрес функции Windows API, которая должна будет выполнять обратные вызовы.

Комментарии закрыты