макрос 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 см. в разделе Анализ аргументов расширения.
Возвращаемое значение
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_CLASS — Extension. Это значение можно изменить, определив 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) |