Тема: ObjectARX и двойной щелчок в автокаде 2002

При двойном щелчке по тексту в Автокаде 2002 запускается редактирование текста, как можно сделать, чтобы моя программа первая включалась в работу, а не после?

Re: ObjectARX и двойной щелчок в автокаде 2002

Для изменения надписей в блоке-рамке (стандартно - двойным щелчком) у меня после первого щелчка (т. е. выделения) добавляется пункт в контекстное меню, выбором которого я и запускаю свою программу для редактирования штампа.

Re: ObjectARX и двойной щелчок в автокаде 2002

В контекстном меню у меня тоже есть своя программа, но это не двойной щелчок

Re: ObjectARX и двойной щелчок в автокаде 2002

Мне кажется, что для решения этой задачи может подойти реактор EditorReactor, у которого есть две функции для работы с mouse ? beginDoubleClick & beginRightClick.
Переопределив их в своем приложении, можно изменить реакцию программы на эти прерывания.
Удачи. VVV

Re: ObjectARX и двойной щелчок в автокаде 2002

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

Re: ObjectARX и двойной щелчок в автокаде 2002

Странно? Тогда ничего не остается, как решать проблему глобально с использованием  ловушки(hook) для перехватывания сообщений, направляемых главному окну Автокада. Для этого можно воспользоваться  функциями SetWindowsHookEx(WH_GETMESSAGE, ?) или SetWindowLong(?, GWL_WNDPROC, ?).

Re: ObjectARX и двойной щелчок в автокаде 2002

Спасибо за совет, но опыта работы с ловушками у меня нет, но попытаюсь попробовать.

Re: ObjectARX и двойной щелчок в автокаде 2002

Кстати, я специально проверил работу функций beginDoubleClick & beginRightClick? У меня они   работают, как положено.

Re: ObjectARX и двойной щелчок в автокаде 2002

VVV пришлите пож пример кода
пожалуйста!

Re: ObjectARX и двойной щелчок в автокаде 2002

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

Re: ObjectARX и двойной щелчок в автокаде 2002

Программа должна запускаться и с меню, и с горячей клавиши, и с командной строки, и с контекстного меню правой кнопки, и по выделенному объексту, и с ДВОЙНОГО ЩЕЛЧКА.

Re: ObjectARX и двойной щелчок в автокаде 2002

Подключи класс AcDbDoubleClickEdit.
Создай от него производный класс со своим объектом и работай с ним как хочешь.
См. пример ObjectARX2002\Samples\DbClickEdit

Re: ObjectARX и двойной щелчок в автокаде 2002

AcDbDoubleClickEdit - это класс из Object ARX 2000?
В хелпе я не нашел ссылку на него.

Re: ObjectARX и двойной щелчок в автокаде 2002

скажи где можно взять ObjectARX 2002 на сайте разработчика Автокада я его не видел. В 2000 его нет. Какая гарантия, что даже при этом классе программа не будет запускаться второй.

Re: ObjectARX и двойной щелчок в автокаде 2002

ObjectArx2002 входит в состав MDT6, подкаталог SDK
Класс AcDbDoubleClickEdit переопределяет обработчик событий двойного щелчка для данного объекта, и что там будет выполнятся зависит только от тебя.
Если используешь программные модули с данным классом в AвтоКАДе 2000/2000i, то необходима подгрузка модулей acdblclkedit.arx, acdbclkeditpe.arx которые входят в состав АвтоКАДа 2002.

Re: ObjectARX и двойной щелчок в автокаде 2002

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

Re: ObjectARX и двойной щелчок в автокаде 2002

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