ObjectARX, AutoCAD. Среда программирования библиотеки C++



         

Ответ на Сообщения AutoCAD - часть 2


/p>

Следующая таблица перечисляет сообщения, что приложение получает, если это имеет зарегистрированный сервис с ObjectARX.

Сообщение

Описание

KDependencyMsg

когда приложение ObjectARX имеет буферизованный объект AcRxService и индекс зависимости на тех сервисных изменениях от 0 до 1.

KNoDependencyMsgSent

когда приложение ObjectARX имеет буферизованный объект AcRxService и индекс зависимости на тех сервисных изменениях от 1 до 0.

Следующая таблица перечисляет сообщения, что приложение должно ответить к тому, если это использует ActiveX Автоматизацию. См. главу 23, “ ОБЩАЯ ОБЪЕКТНАЯ МОДЕЛЬ, ActiveX Автоматизация, и Объектный Менеджер Свойства. ”

Сообщение

Описание

kOleUnloadAppMsg

Посылается, чтобы определить, может ли приложение быть выгружено (то есть ни один из его объектов ActiveX или интерфейсов не упомянут другими приложениями).

См. rxdefs.h файл, где эти константы перечисления определены в соответствии с объявлением типа AppMsgCode. Вы будете должны решить, на которые сообщения ваше приложение ObjectARX ответит.

Следующая таблица описывает рекомендуемые действия после получения данного сообщения. ObjectARX прикладные реакции на сообщения AutoCAD

Сообщение

Рекомендуемые действия

kInitAppMsg

Регистрируйте услуги, классы, AcEd команды и реакторы,  AcRxDynamicLinker реакторы. Инициализируйте системные ресурсы приложения типа устройств и окон.

Исполните всю одноразовую раннюю инициализацию.

AcRx, AcEd, и AcGe весь активен. Сохраните значение pkt параметра, если Вы хотите разблокировать и повторно блокировать ваше приложение. Не ожидайте, что драйверы устройства будут инициализированы, любые ресурсы интерфейса пользователя быть активными, приложения, которые будут загружены в специфическом порядке, будут автошепелявить, чтобы присутствовать, или любые базы данных, чтобы быть открытыми. Запросы, возводящие в степень любое из этих предположений приведут к состоянию ошибки, иногда фатальному.

AcDb и AcGi библиотеки вообще еще не активен, хотя связано AcRx, и другие структуры на месте

KUnloadAppMsg

Исполняют заключительную системную очистку ресурса. Что-нибудь начатое или созданное в kInitAppMsg должно теперь быть остановлено или разрушено. Не ожидайте вещи быть любой отличным от описания kInitAppMsg. AutoCAD мог быть главным образом демонтирован к времени, этот запрос сделан, если бы не перечисленные библиотеки, поскольку активный в kInitAppMsg Делают описание.

KOleUnloadAppMsg

Это сообщение нужно ответить только приложениями, использующими ActiveX Автоматизацию.

Ответьте с AcRx:: kRetOK, если приложение может быть вызгружено (ни один из его объектов ActiveX или интерфейсов не упомянут другими приложениями). Если это не может быть выгружено, отвечать с AcRx:: kRetError.

KLoadDwgMsg

исполняют инициализацию, уместную текущему рисунку сеанса редактирования. AcDb, AcGi, и интерфейс пользователя API - все теперь активные.

Было ли что - нибудь сделано к рисунку, не определен.

Все Снабженные автохамом API теперь активны. Вы можете исполнять регистрацию функции AutoLISP в это время, и инициализировать интерфейс пользователя. Другие операции, чтобы исполнить теперь включают поллинг драйверы AutoCAD и запрос AcEditorReactor события, если Вы хотите самый ранний возможный доступ к acdbHostApplicationServices()->workingDatabase().

Не Делайте что - нибудь, что Вы не хотели бы случиться для каждого рисунка сеанс редактирования. Предположите, что это сообщение послано больше чем однажды в выполнение программы.

KUnloadDwgMsg

выпускают или очищают все начатое или буферизованный в ответ на код kLoadDwgMsg. Выпустите все AcDb реакторы, исключая постоянные реакторы.

Не выпустите системные ресурсы, которые не связаны к сеансу редактирования, или очищают классы AcRx, AcEd реакторы, или команды; они остаются правильными(допустимыми) поперек сеансов редактирования.

KDependencyMsg

исполняют любые действия, которые являются необходимыми для вашего приложения, когда другие приложения станут зависящий от этого, типа блокировки вашего приложения так, чтобы это не могло быть разгруженно.

KNoDependencyMsg

исполняют любые действия, которые являются необходимыми для вашего приложения, когда имеются больше не никакие другие приложения, зависящие вашего, типа разблокирования вашего приложения так, чтобы это могло быть разгруженно пользователем если желательно.

KInvkSubrMsg

вызывают функции, буферизованные с acedDefun (). Определите функцию,  звоня по телефону к acedGetFuncode (). Возвращаемые значения с acedRetxxx ().

Не Делайте много здесь кроме функционального обращения.

KPreQuitMsg

разгружают любые зависимости (приложения, DLLs, и так далее) который ваше приложение управляет, чтобы гарантировать, что они являются разгруженным before your приложением.

kEndMsg

kCfgMsg

kQuitMsg

kSaveMsg

Рассмотрите использование AcEditorReactor повторных вызовов случая как альтернатива к ответу на эти сообщения. Не ответьте на эти сообщения, если вы отвечаете на эквивалентные повторные вызовы случая, сделанные через AcEditorReactor.




Содержание  Назад  Вперед