Тема: ObjectARX и двойной щелчок в автокаде 2002
При двойном щелчке по тексту в Автокаде 2002 запускается редактирование текста, как можно сделать, чтобы моя программа первая включалась в работу, а не после?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → ObjectARX и двойной щелчок в автокаде 2002
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
При двойном щелчке по тексту в Автокаде 2002 запускается редактирование текста, как можно сделать, чтобы моя программа первая включалась в работу, а не после?
Для изменения надписей в блоке-рамке (стандартно - двойным щелчком) у меня после первого щелчка (т. е. выделения) добавляется пункт в контекстное меню, выбором которого я и запускаю свою программу для редактирования штампа.
В контекстном меню у меня тоже есть своя программа, но это не двойной щелчок
Мне кажется, что для решения этой задачи может подойти реактор EditorReactor, у которого есть две функции для работы с mouse ? beginDoubleClick & beginRightClick.
Переопределив их в своем приложении, можно изменить реакцию программы на эти прерывания.
Удачи. VVV
Я как раз и использую данный реактор, но он работает по двойному щелчку позже, чем встроенная команда Автокада.
Странно? Тогда ничего не остается, как решать проблему глобально с использованием ловушки(hook) для перехватывания сообщений, направляемых главному окну Автокада. Для этого можно воспользоваться функциями SetWindowsHookEx(WH_GETMESSAGE, ?) или SetWindowLong(?, GWL_WNDPROC, ?).
Спасибо за совет, но опыта работы с ловушками у меня нет, но попытаюсь попробовать.
Кстати, я специально проверил работу функций beginDoubleClick & beginRightClick? У меня они работают, как положено.
VVV пришлите пож пример кода
пожалуйста!
А может и не надо двойным щелчком? Определите горячую клавишу и все. С текстом все равно работать с клавиатуры, так и бросьте мышь.
Программа должна запускаться и с меню, и с горячей клавиши, и с командной строки, и с контекстного меню правой кнопки, и по выделенному объексту, и с ДВОЙНОГО ЩЕЛЧКА.
Подключи класс AcDbDoubleClickEdit.
Создай от него производный класс со своим объектом и работай с ним как хочешь.
См. пример ObjectARX2002\Samples\DbClickEdit
AcDbDoubleClickEdit - это класс из Object ARX 2000?
В хелпе я не нашел ссылку на него.
скажи где можно взять ObjectARX 2002 на сайте разработчика Автокада я его не видел. В 2000 его нет. Какая гарантия, что даже при этом классе программа не будет запускаться второй.
ObjectArx2002 входит в состав MDT6, подкаталог SDK
Класс AcDbDoubleClickEdit переопределяет обработчик событий двойного щелчка для данного объекта, и что там будет выполнятся зависит только от тебя.
Если используешь программные модули с данным классом в AвтоКАДе 2000/2000i, то необходима подгрузка модулей acdblclkedit.arx, acdbclkeditpe.arx которые входят в состав АвтоКАДа 2002.
Я его переопределяю в своей программе, но я не могу запретить запускаться штатной программе редактирования в самом автокаде. Событие двойной щелчок будет одинаково ловить моя программа и любая другая, какая быстрей?
Если в своей программе переопределяешь событие двойного щелчка, например для объекта TEXT, то по двойному щелчку на любой примитив TEXT будет запускаться только твоя программа и никакая другая.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → ObjectARX и двойной щелчок в автокаде 2002
Форум работает на PunBB, при поддержке Informer Technologies, Inc