Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Алексей Терно от 03-03-2017, 00:40:49

Название: событие Application.BeginDoubleClick
Отправлено: Алексей Терно от 03-03-2017, 00:40:49
При отслеживании события Application.BeginDoubleClick есть возможность отметить стандартное действие? Например, при двойном клике на полилинии вызывается команда _pedit, а я хочу выполнять свои действия.
Название: Re: событие Application.BeginDoubleClick
Отправлено: Александр Ривилис от 03-03-2017, 01:36:09
Можно. Но тогда из CUIX должны быть убраны соответствующие обработчики.
Название: Re: событие Application.BeginDoubleClick
Отправлено: Алексей Терно от 03-03-2017, 09:45:42
Обработчики в CUIX???

И как отменить стандартное действие при BeginDoubleClick?
Название: Re: событие Application.BeginDoubleClick
Отправлено: Дмитрий Загорулькин от 03-03-2017, 13:30:34
Появилась безумная идея, как такое можно сделать :)
При помощи моего любимого события - Application.PreTranslateMessage.
Любое действие пользователя по отношению к AutoCAD проходит через него. В этом же событии есть возможность пропускать действие дальше в AutoCAD или нет. Возможно, что получится как-то анализировать действия мыши и не пропускать двойные клики в приложение, подменяя их своим действием.
Название: Re: событие Application.BeginDoubleClick
Отправлено: Александр Ривилис от 03-03-2017, 14:19:08
Обработчики в CUIX???

И как отменить стандартное действие при BeginDoubleClick?

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F196258%2F7842324.7%2F0_1517ba_d2dbd068_orig.png&hash=8d449a034e25b1d68cdbd9b7746a5931)

Удалить стандартное действие для полилинии. Или вообще заменить на твоё (в виде команды). Можно это сделать при помощи Customize API. И тогда обработка события Application.BeginDoubleClick не нужна. Пример: http://adndevblog.typepad.com/autocad/2012/09/displaying-entity-details-on-double-click.html
Название: Re: событие Application.BeginDoubleClick
Отправлено: Александр Ривилис от 03-03-2017, 14:21:19
Появилась безумная идея, как такое можно сделать :)
При помощи моего любимого события - Application.PreTranslateMessage.
Любое действие пользователя по отношению к AutoCAD проходит через него. В этом же событии есть возможность пропускать действие дальше в AutoCAD или нет. Возможно, что получится как-то анализировать действия мыши и не пропускать двойные клики в приложение, подменяя их своим действием.
Идея не безумная, но и не так просто реализуемая.
Название: Re: событие Application.BeginDoubleClick
Отправлено: Дмитрий Загорулькин от 03-03-2017, 14:47:36
Да, через Customize API попроще будет. А главное - надежнее.
Название: Re: событие Application.BeginDoubleClick
Отправлено: Алексей Терно от 03-03-2017, 14:52:10
Через Customize API я уберу действие совсем - со всех полилиний, а мне нужно на одних оставить стандартное, а на "моих" - заменить на свой обработчик.
Посмотрю, что можно сделать с помощью Application.PreTranslateMessage.
Название: Re: событие Application.BeginDoubleClick
Отправлено: Александр Ривилис от 03-03-2017, 15:55:07
Через Customize API я уберу действие совсем - со всех полилиний, а мне нужно на одних оставить стандартное, а на "моих" - заменить на свой обработчик.
Заменяешь для всех полилиний на свой обработчик. В своём обработчике идентифицируешь "свой" или "чужой". Для "своих" - своя обработка, для "чужих" вызываешь стандартный обработчик.