Access 2002

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


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

Public Function SampleCa11back

ByVal hWnd As Long, ByVal uiMsg As Long,

ByVal wParam As Long, ByVal IParam As Long) As Long

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

Как же сообщить Windows, какую функцию она должна вызывать? Для этого у объекта CommonDI g есть свойство Call Back. Вы должны присвоить ему адрес своей функции, для чего используется модификатор AddressOf. (Раньше этот модификатор был доступен только в Visual Basic, теперь же им можно пользоваться

во всех приложениях Office, поддерживающих VBA.) Модификатор AddressOf заменяет имя процедуры ее адресом в памяти. Чтобы этот механизм сработал, процедура должна быть объявлена как Publ i с в стандартном модуле — она не может быть Private и не может находиться в модуле класса.

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