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


макрос 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 можно использовать для получения необработанного аргумента для синтаксического анализа.
 

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

Никакой

Замечания

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

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

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

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

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

EXT_CLASS

    #ifndef EXT_CLASS
    #define EXT_CLASS Extension
    #endif

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

Каждая команда расширения в библиотеке объявляется как член класса EXT_CLASS с помощью макроса EXT_COMMAND_METHOD. Например, библиотека с двумя командами расширения extcmd и anotherextcmd, может определить класс 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 (include Engextcpp.hpp)

См. также

EXT_CLASS

EXT_COMMAND_METHOD

ExtExtension