e1337e4016
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается. - .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным (safety-net на случай повторной локальной выгрузки). - CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
319 lines
15 KiB
Markdown
319 lines
15 KiB
Markdown
---
|
||
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. Индекс события задан в перечислении событий приложения....
|