--- title: "Интерфейс ksKompasObjectNotify/IKompasObjectNotify" type: interface api: [api7] tags: [interface, api7, kskompasobjectnotify] sources: - kskompasobjectnotify.html --- *API интерфейсов. Версия 7 > Интерфейсы событий * ## Интерфейс ksKompasObjectNotify/IKompasObjectNotify | ksKompasObjectNotify | - интерфейс Automation | | --- | --- | | IKompasObjectNotify | - интерфейс COM | Интерфейс событий приложения. Позволяют контролировать состояние приложения. В Automation источником событий для подписки являются: •для API интерфейсов версии 5 - объект KompasObject. •для API интерфейсов версии 7 - объект IApplication. В СOM источника нет. ## ApplicationDestroy - Закрытие приложения Синтаксис Automation: ``` BOOL ApplicationDestroy(); Возвращаемое значение: - Не используется. ``` Синтаксис COM: ``` BOOL ApplicationDestroy(); Возвращаемое значение: - Не используется. ``` Примечание: 1. Источником события является интерфейс KompasObject. 2. Индекс события задан в перечислении событий приложения.... 3. При обработке данного события необходимо отписаться от всех событий. Библиотека должна сама следить за отпиской событий. ## BeginCloseAllDocument - Начало закрытия всех открытых документов Синтаксис Automation: ``` BOOL BeginCloseAllDocument(); ``` Синтаксис COM: ``` BOOL BeginCloseAllDocument(); Возвращаемое значение: TRUE - закрытие всех открытых документов, FALSE - закрытие всех открытых документов запрещено. ``` Примечание: Индекс события задан в перечислении событий приложения.... ## BeginConvertToSavePrevious - Начало конвертации документа перед записью в предыдущую версию Синтаксис Automation: ``` BOOL BeginConvertToSavePrevious( LPDISPATCH pDoc, long docType, long saveVersion, LPDISPATCH saveToPreviusParam ); ``` Синтаксис COM: ``` BOOL BeginConvertToSavePrevious( long pDoc, long docType, long saveVersion, LPUNKNOWN saveToPreviusParam ); Возвращаемое значение: - Не используется. Входные параметры: pDoc - документ, docType - тип документа. saveVersion - версия сохранения документа из перечисления ksSaveDocumentVersionEnum, saveToPreviusParam - параметры конвертации при сохранении в предыдущую версию ISaveToPreviusParam\ksSaveToPreviusParam. ``` ## BeginCreate - Начало создания документа (до диалога выбора типа) Синтаксис Automation: ``` BOOL BeginCreate (long docType); ``` Синтаксис COM: ``` BOOL BeginCreate (long docType); Входные параметры: docName - тип документа, 0 - если пользователь запросил диалог создания документа. Возвращаемое значение: TRUE - создать документ, FALSE - создание документа запрещено. ``` Примечание: Источником события является интерфейс KompasObject. ## BeginDragOpenFiles - Открытие файлов перетаскиванием в окно Компас Синтаксис Automation: ``` BOOL BeginDragOpenFiles( VARIANT * filesList, BOOL insert, BOOL * filesListChanged ); ``` Синтаксис COM: ``` BOOL BeginDragOpenFiles( VARIANT * filesList, BOOL insert, BOOL * filesListChanged ); Возвращаемое значение: TRUE - использовать стандартный механизм открытия\вставки файлов, FALSE - библиотека самостоятельно обработала список файлов или запретила действия с данными файлами. Входные параметры: filesList - список файлов, insert TRUE - выполняется вставка файлов в сборку, FALSE - выполняется открытие файлов. Выходные параметры: filesList - список файлов (библиотека может изменить список файлов), filesListChanged - признак изменения списка файлов. ``` ## 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. Индекс события задан в перечислении событий приложения.... ## ChangeTheme - Событие изменения темы Версия: КОМПАС v18 Синтаксис Automation: ``` BOOL ChangeTheme( long newTheme ); ``` Синтаксис COM: ``` BOOL ChangeTheme( long newTheme ); Возвращаемое значение: - Не используется. Входные параметры newTheme - новая тема из перечисления ksThemeEnum. ``` ## 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. Индекс события задан в перечислении событий приложения.... ## EndConvertToSavePrevious - Завершение конвертации документа перед записью в предыдущую верcию Синтаксис Automation: ``` BOOL EndConvertToSavePrevious( LPDISPATCH pDoc, long docType, long saveVersion, LPDISPATCH saveToPreviusParam ); ``` Синтаксис COM: ``` BOOL EndConvertToSavePrevious( long pDoc, long docType, long saveVersion, LPUNKNOWN saveToPreviusParam ); Возвращаемое значение: - Не используется. Входные параметры pDoc - документ, docType - тип документа, saveVersion - версия сохранения документа из перечисления ksSaveDocumentVersionEnum, saveToPreviusParam - параметры конвертации при сохранении в предыдущую версию ISaveToPreviusParam\ksSaveToPreviusParam. ``` ## IsNeedConvertToSavePrevious - Начало сохранения документа в предыдущую верcию Синтаксис Automation: ``` BOOL IsNeedConvertToSavePrevious( LPDISPATCH pDoc, long docType, long saveVersion, LPDISPATCH saveToPreviusParam, BOOL * needConvert ); ``` Синтаксис COM: ``` BOOL IsNeedConvertToSavePrevious( long pDoc, long docType, long saveVersion, LPUNKNOWN saveToPreviusParam, BOOL * needConvert ); Возвращаемое значение: - Не используется. Входные параметры pDoc - документ, docType - тип документа, saveVersion - версия сохранения документа из перечисления ksSaveDocumentVersionEnum, saveToPreviusParam - параметры конвертации при сохранении в предыдущую версию ISaveToPreviusParam\ksSaveToPreviusParam. Выходной параметр: needConvert - требуется вернуть TRUE, если для сохранения в предыдущую версию требуется конвертация документа. ``` ## 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. Индекс события задан в перечислении событий приложения.... 2. Если syskey = false, была нажата обычная клавиша, что соответствует событию WM_KEYUP, если SYSKEY = true, была нажата системная клавиша, что соответствует событию WM_SYSKEYUP. 3. Если библиотека обработала событие нажатия клавиши и нужно запретить обработку события другими подписчиками, то нужно обнулить код клавиши т.е. *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_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. Индекс события задан в перечислении событий приложения....