Тема: Как прервать команду

Подскажите, пожалуйста, как прервать выпонение команды в функции AcEditorReactor::commandWillStart(), если я определяю, что данная команда не должна быть выполнена?
Попробовал вызвать AcEditorReactor::commandFailed(), однако это не прерывает выполнение команды :(

Re: Как прервать команду

Есть несколько вариантов:
1) В AcEditorReactor::commandWillStart()

acedPostCommand(_T("\003\003"));

Функция недокументированная. Ее описание:

extern Adesk::Boolean acedPostCommand(const ACHAR* );

2) Использовать документный реактор AcApDocManagerReactor::documentLockModeChanged() и в нем вызывать veto();

Re: Как прервать команду

спасибо, помогло.
в первом случае, правда, команда начинает выполняться и появляется диалоговое окно команды, потом прерывается по нажатии кнопки ввода точки.
Второй способ работает идеально.

Re: Как прервать команду

Тогда наверное так (не было пробела в конце строки):

acedPostCommand(_T("\003\003 "));

Re: Как прервать команду

ради интереса попробовал acedPostCommand()
1.выполяем команду Win
2.попадаем в commandWillStart() первый раз
void CommandReactor::commandWillStart( const ACHAR* command )
{
    if( wcscmp( command, _T( "WIN" ) ) == 0 )
        acedPostCommand(_T("\003\003 "));
}
3.диалоговое окно команды открывается, жмем на кнопку, которая должна делает
BeginEditorCommand();
потом acedEntSel(), возвращающий RTCAN
и вылетаем по CancelEditorCommand();
4.попадаем в commandWillStart() второй раз
5.возвращаемся к диалоговому окну
и так до бесконечности, окно даже не закрыть :)