===== ModifyUIPageHook ===== ==== Синтаксис ==== int ModifyUIPageHook( int event, PAGEHOOKPROC proc, LPARAM ClientData, int mode ); ==== Описание ==== Функция устанавливает/удаляет ловушку событий [[elflib:types:book|книг]]. ==== Параметры ==== * **event** - номер события, к которому привязана ловушка. Если функции передано нулевое значение (NIL_EVENT), будут ловиться все события. * **proc** - колбэк-функция * **ClientData** - данные, ассоциируемые с ловушкой. Эти данные будут всегда приходить в колбэк-функцию. * **mode** - действие, выполняемое над ловушкой: * **PAGE_HOOK_REMOVE** - удаление ловушки. Параметры event и PROC должны соответствовать соответствующим параметрам, использованным при установке ловушки. * **PAGE_HOOK_ADD_BEFORE** - установка ловушки "before". Колбэк-функция выполняется до обработчика события книги. При этом колбэк-функция может запретить передачу события другим ловушкам, заблокировать выполнение обработчика события, а так же воспрепятствовать получению события другими книгами (возвращаемые колбэком значения BLOCK_EVENT_GLOBALLY и BLOCK_EVENT_IN_THIS_SESSION). * **PAGE_HOOK_ADD_AFTER** - установка ловушки "after". Колбэк-функция выполняется после обработчика события книги. Колбэк не может влиять на передачу события другим ловушкам и книгам, результат колбэк-функции игнорируется. ==== Возвращаемое значение ==== В случае успешного выполнения, функция возвращает 0. При ошибке функция возвращает отрицательное число. ==== Примечание ==== Колбэк может получить нулевой указатель book, если сообщение передано обработчику страницы по умолчанию (см. параметр default_page структуры APP_DESC, передаваемой функции CreateBook). Колбэк "after" может получить недействительный указатель book, если книга уничтожается в оригинальном обработчике события. Поэтому при использовании book в ловушке этого типа нужно **обязательно** проверять, существует ли книга. Для этого можно использовать функцию FindBookEx. Использовать одну колбэк-функцию для установки сразу обоих типов ловушек одного и того же события, не рекомендуется, хотя и допускается. При удалении в этом случае будет удален хук "before", а при повторном удалении уничтожится уже "after". ==== См. также ==== [[CreateBook]], [[FindBookEx]], [[ModifyKeyHook]], [[elflib:types:APP_DESC]]