Поделиться через


макрос EXT_COMMAND (engextcpp.hpp)

Макрос EXT_COMMAND используется для определения команды расширения, объявленной с помощью макроса EXT_COMMAND_METHOD .

Команда расширения определяется следующим образом:

Синтаксис

void EXT_COMMAND(
   _Name,
   _Desc,
   _Args
);

Параметры

_Name

Имя команды расширения. Он должен совпадать с параметром _Name , который используется для объявления команды расширения с помощью EXT_COMMAND_METHOD.

Так как EXT_COMMAND является макросом, _Name должно быть именем без имени команды расширения и не должно заключаться в кавычки или быть переменной.

_Desc

Строка, описывающая команду расширения.

_Args

Строка, описывающая аргументы, ожидаемые командой расширения. Сведения о форматировании строки _Args см. в разделе Анализ аргументов расширения.

Примечание Вместо указания строки, описывающей аргументы, можно использовать строку "{{custom}}", чтобы указать, что команда расширения будет анализировать сами аргументы. Метод GetRawArgStr можно использовать для получения необработанного аргумента для синтаксического анализа.
 

Возвращаемое значение

None

Remarks

Текст команды расширения не принимает аргументов. Однако поскольку команда расширения объявлена как метод класса EXT_CLASS , она имеет доступ ко всем членам базового класса ExtExtension , некоторые из которых инициализированы для выполнения команды расширения.

Макрос EXT_COMMAND_METHOD следует использовать для объявления команды расширения. Как и во всех объявлениях C++, объявление EXT_COMMAND_METHOD должно отображаться в исходных файлах перед определением EXT_COMMAND.

Когда обработчик отладчика вызывает командный метод расширения, он заключает вызов в блок try/except . Это защищает подсистему от некоторых типов ошибок в коде расширения; но, так как вызовы расширений выполняются в том же потоке, что и подсистема, они по-прежнему могут привести к сбою.

Этот макрос также создает функцию с именем _Name (которая вызывает метод, определенный макросом). Чтобы подсистема вызывала расширение, эту функцию необходимо экспортировать из библиотеки расширений DLL.

Константа EXT_CLASS указывает имя класса C++, представляющего библиотеку расширений EngExtCpp.

EXT_CLASS

    #ifndef EXT_CLASS
    #define EXT_CLASS Extension
    #endif

Значение по умолчанию EXT_CLASSExtension. Это значение можно изменить, определив EXT_CLASS перед включением файла заголовка Engextcpp.hpp.

Каждая команда расширения в библиотеке объявляется как член класса EXT_CLASS с помощью EXT_COMMAND_METHOD макроса. Например, библиотека с двумя командами расширения, extcmd и другойextcmd, может определить класс EXT_CLASS следующим образом:

class EXT_CLASS : public ExtExtension
{
public:
    EXT_COMMAND_METHOD(extcmd);
    EXT_COMMAND_METHOD(anotherextcmd);
}

Команды расширения, объявленные с помощью EXT_COMMAND_METHOD, должны быть определены с помощью EXT_COMMAND и экспортированы из библиотеки.

Макрос EXT_DECLARE_GLOBALS создает один экземпляр класса EXT_CLASS.

Макрос EXT_DECLARE_GLOBALS настраивает некоторые глобальные переменные для использования платформой расширений EngExtCpp. Сюда входит создание одного экземпляра класса EXT_CLASS , представляющего библиотеку расширений EngExtCpp.

Один из исходных файлов, скомпилированных в библиотеку расширений EngExtCpp, должен содержать следующую команду.

EXT_DECLARE_GLOBALS()

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть engextcpp.hpp (включая Engextcpp.hpp)

См. также раздел

EXT_CLASS

EXT_COMMAND_METHOD

ExtExtension