--- title: "Интерфейс событий приложения ksKompasObjectNotify/IKompasObjectNotify" type: interface api: [api5] tags: [interface, api5, kskompasobjectnotify5] sources: - kskompasobjectnotify5.html --- *API интерфейсов. Версия 5 > Интерфейсы событий API5  > События в КОМПАС Общие сведения * ## Интерфейс событий приложения ksKompasObjectNotify/IKompasObjectNotify | ksKompasObjectNotify | - интерфейс Automation | | --- | --- | | IKompasObjectNotify | - интерфейс COM | Позволяют контролировать состояние приложения. В Automation источником событий для подписки являются: •для API интерфейсов версии 5 - объект KompasObject. •для API интерфейсов версии 7 - объект IApplication. В СOM источника нет. ksKompasObjectNotify, IKompasObjectNotify - события ksKompasObjectNotify/ IKompasObjectNotify - методы ## ApplicationDestroy - Закрытие приложения Синтаксис Automation: ``` BOOL ApplicationDestroy(); Возвращаемое значение: - Не используется. ``` Синтаксис COM: ``` BOOL ApplicationDestroy(); Возвращаемое значение: - Не используется. ``` Примечание: 1. Источником события является интерфейс KompasObject. 2. Индекс события задан в перечислении событий приложения.... 3. При обработке данного события необходимо отписаться от всех событий. Библиотека должна сама следить за отпиской событий. ## BeginCloseAllDocument - Начало закрытия всех открытых документов Синтаксис Automation: ``` BOOL BeginCloseAllDocument(); ``` Синтаксис COM: ``` BOOL BeginCloseAllDocument(); Возвращаемое значение: TRUE - закрытие всех открытых документов, FALSE - закрытие всех открытых документов запрещено. ``` Примечание: Индекс события задан в перечислении событий приложения.... ## BeginCreate - Начало создания документа (до диалога выбора типа) Синтаксис Automation: ``` BOOL BeginCreate (long docType); ``` Синтаксис COM: ``` BOOL BeginCreate (long docType); Входные параметры: docName - тип документа, 0 - если пользователь запросил диалог создания документа. Возвращаемое значение: TRUE - создать документ, FALSE - создание документа запрещено. ``` Примечание: Источником события является интерфейс KompasObject. ## BeginOpenDocument - Начало открытия документа Синтаксис Automation: ``` BOOL BeginOpenDocument (BSTR docName); Входные параметры: docName - имя файла документа. Возвращаемое значение: TRUE - открыть документ, FALSE - не открывать документ. ``` Синтаксис COM: ``` BOOL BeginOpenDocument (char * docName); Входные параметры: docName - имя файла документа. Возвращаемое значение: TRUE - открыть документ, FALSE - не открывать документ. ``` Примечание: 1. Источником события является интерфейс KompasObject. 2. Индекс события задан в перечислении событий приложения.... ## BeginOpenFile - Начало открытия документа (до диалога выбора имени) Синтаксис Automation: ``` BOOL BeginOpenFile(); ``` Синтаксис COM: ``` BOOL BeginOpenFile(); Возвращаемое значение: TRUE - вызвать диалог открытия документа, FALSE - вызов диалога открытия документа запрещен. ``` Примечание: Индекс события задан в перечислении событий приложения.... ## BeginRequestFiles - Запрос имен файлов Синтаксис Automation: ``` BOOL BeginRequestFiles( long requestID, VARIANT * files ); ``` Синтаксис COM: ``` BOOL BeginRequestFiles( long requestID, VARIANT * files ); Входные параметры: requestID - тип запроса файлов из перечисления ksRequestFilesTypeEnum. Выходные параметры: files - имя файла или список SafeArray файлов. Возвращаемое значение: TRUE - использовать стандартный диалог выбора файлов, FALSE - если список файлов задан - использовать файл или файлы из списка, если список файлов не задан - отмена выбора файлов. ``` Примечание: 1. Если выбран один файл, то в VARIANT его имя можно положить как строку, тип VARIANT-а - VT_BSTR. Если выбрано несколько файлов, то их имена в VARIANT нужно положить как массив строк тип VARIANT-а - VT_ARRAY | VT_BSTR. 2. Возможность множественного выбора и допустимые расширения файлов зависят от типа запроса файлов. 3. В данных событиях в отличие от других событий начала какого либо действия требуется обработка трех состояний: •отказ пользователя или обработка события выполнена полностью на стороне библиотеки - событие возвращает FALSE; •событие возвращает TRUE и имя файла для продолжения выполнения команды - процесс продолжается без запуска диалога выбора файла или файлов; •событие возвращает TRUE, но имя файла не возвращается - запускается стандартный диалог выбора файла из системы КОМПАС. ## ChangeActiveDocument - Переключение на другой активный документ Синтаксис Automation: ``` BOOL ChangeActiveDocument (LPDISPATCH pDoc, long docType); Входные параметры: pDoc - указатель на интерфейс IDispatch открытого документа, docType - тип документа DocType. Возвращаемое значение: - Не используется. ``` Синтаксис COM: ``` BOOL ChangeActiveDocument(long pDoc, int docType); Входные параметры: pDoc - указатель на открытый документ, docType - тип документа DocType. Возвращаемое значение: - Не используется. ``` Примечание: 1. Источником события является интерфейс KompasObject. 2. Индекс события задан в перечислении событий приложения.... ## CreateDocument - Документ создан Синтаксис Automation: ``` BOOL CreateDocument (LPDISPATCH pDoc, long docType); Входные параметры: pDoc - указатель на интерфейс IDispatch созданного документа, docType - тип документа DocType. Возвращаемое значение: - Не используется. ``` Синтаксис COM: ``` BOOL CreateDocument (long pDoc, int docType); Входные параметры: pDoc - указатель на созданный документ, docType - тип документа DocType. Возвращаемое значение: - Не используется. ``` Примечание: 1. Источником события является интерфейс KompasObject. 2. Индекс события задан в перечислении событий приложения.... ## IsNotIifyProcess - Ограничение обрабатываемых событий Синтаксис Automation: ``` Не используется. ``` Синтаксис COM: ``` BOOL IsNotifyProcess (int notifyType); Входной параметр: notifyType - номер события в перечислении событий. Возвращаемое значение: TRUE - событие будет обрабатываться, FALSE - событие обрабатываться не будет. ``` Примечание: В COM перед любым вызовом события система сделает запрос о возможности его обработки с использованием данного метода. Библиотека сама может ограничивать обрабатываемые события. ## KeyDown - Клавиша нажата и удерживается нажатой Синтаксис Automation: ``` BOOL KeyDown (long * key, long flags, BOOL sysKey); ``` Синтаксис COM: ``` BOOL KeyDown( long * key, long flags, BOOL sysKey); Входные параметры: key - код нажатой клавиши, flags - флаг клавиатуры, sysKey - признак нажатия системной клавиши. Выходные параметры: key - измененный код нажатой клавиши. Возвращаемое значение: TRUE - разрешить обработку нажатой клавиши, FALSE - запретить обработку нажатой клавиши. ``` Примечание: 1. Индекс события задан в перечислении событий приложения... 2. Благодаря автоматическому повторению кода клавиши при удержании ее нажатой, до появления события wm_keyup может выдаваться несколько событий wm_keydown. Значение разряда 30 параметра flags позволяет определить, было ли событие wm_keydown первым или является повторным во время удержания клавиши нажатой. 3. Если библиотека обработала событие нажатия клавиши и нужно запретить обработку события другими подписчиками, то нужно обнулить код клавиши т.е. *key = 0 и вернуть FALSE, если нужно запретить обработку события системой КОМПАС. ## KeyPress - Одиночное нажатие клавиши Синтаксис Automation: ``` BOOL KeyPress (long * key, BOOL sysKey); ``` Синтаксис COM: ``` BOOL KeyPress (long * key, BOOL sysKey); Входные параметры: key - код нажатой клавиши, flags - флаг клавиатуры, sysKey - признак нажатия системной клавиши. Выходные параметры: key - измененный код клавиши. Возвращаемое значение: TRUE - разрешить обработку нажатой клавиши, FALSE - запретить обработку нажатой клавиши. ``` Примечание: 1. Индекс события задан в перечислении событий приложения.... Если syskey = false, была нажата обычная клавиша, что соответствует событию wm_keyup, если syskey = true, была нажата системная клавиша, что соответствует событию wm_syskeyup. 2. Если библиотека обработала событие нажатия клавиши и нужно запретить обработку события другими подписчиками, то нужно обнулить код клавиши т.е. *key = 0 и вернуть FALSE, если нужно запретить обработку события системой КОМПАС. ## KeyUp - Клавиша отпущена Синтаксис Automation: ``` BOOL KeyUp (long * key, long flags, BOOL sysKey); ``` Синтаксис COM: ``` BOOL KeyUp (long * key, long flags, BOOL sysKey); Входные параметры: key - код нажатой клавиши, flags - флаг клавиатуры, sysKey - признак нажатия системной клавиши, Выходные параметры: key - измененный код нажатой клавиши. Возвращаемое значение: TRUE - разрешить обработку нажатой клавиши, FALSE - запретить обработку нажатой клавиши. ``` Примечание: 1. Индекс события задан в перечислении событий приложения.... 2. Если syskey = false, была нажата обычная клавиша, что соответствует событию wm_keyup, если syskey = true, была нажата системная клавиша, что соответствует событию wm_syskeyup. 3. Если библиотека обработала событие нажатия клавиши и нужно запретить обработку события другими подписчиками, то нужно обнулить код клавиши т.е. *key = 0 и вернуть FALSE, если нужно запретить обработку события системой КОМПАС. ## OpenDocument - Документ открыт Синтаксис Automation: ``` BOOL OpenDocument (LPDISPATCH pDoc, long docType); Входные параметры: pDoc - указатель на интерфейс IDispatch открытого документа, docType - тип документа DocType. Возвращаемое значение: - Не используется. ``` Синтаксис COM: ``` BOOL OpenDocument(long pDoc, int docType); Входные параметры: pDoc - указатель на открытый документ, docType - тип документа DocType. Возвращаемое значение: - Не используется. ``` Примечание: 1. Источником события является интерфейс KompasObject. 2. Индекс события задан в перечислении событий приложения....