Введение в программирование

       

Таблица описания команд


Для таблицы описания команд в MFC-библиотеку включены пять следующих макросов:

  • BEGIN_PARSE_MAP - определяет начало таблицы описания команд и указывает класс функций членов и базовый класс.
  • END_PARSE_MAP - определяет конец таблицы описания команд..
  • ON_PARSE_COMMAND - идентифицирует команду и указывает соответствующую ей функцию.
  • ON_PARSE_COMMAND_PARAMS - определяет список параметров обрабатываемой команды. Этот макрос должен следовать непосредственно за макросом ON_PARSE_COMMAND.
  • DEFAULT_PARSE_COMMAND - определяет команду, используемую в том случае, если нет явного указания выполняемой команды.

Макрос ON_PARSE_COMMAND используется при определении команды для объекта класса CHttpServer (или наследуемого от него), поступающей от клиента, и имеет следующее описание:

ON_PARSE_COMMAND(FnName, mapClass, Args)

Параметры:

FnName - имя функции члена класса, а также и имя команды.

mapClass - имя класса указанной функции.

Args- указывает тип списка параметров и может принимать следующие значения

ITS_EMPTY - параметров нет;

ITS_PSTR - указатель на строку;

ITS_RAW - данные, предварительно не обрабатываемые. Используется в том случае, если список параметров HTTP-запроса может иметь различное число параметров;

ITS_I2 - значение типа short

ITS_I4 - значение типа long

ITS_R4 - значение типа float

ITS_R8 - значение типа double

ITS_I8 - значение типа 64-битовое integer

ITS_ARGLIST - указатель на объект типа CHttpArgList.

Например:

BEGIN_PARSE_MAP(CDerivedClass, CHttpServer) DEFAULT_PARSE_COMMAND(Myfunc, CDerivedClass) // Для запроса типа // http://LOCALSERVER/MyISAPI_1.dll?Myfunc&string1&135 ON_PARSE_COMMAND(Myfunc, // Имя функции CDerivedClass, // Имя класса ITS_PSTR ITS_I2) // Список из двух параметров: // указатель на строку, значение типа short ON_PARSE_COMMAND_PARAMS("string integer=42")

// Для запроса с тремя параметрами ON_PARSE_COMMAND(Myfunc2, CDerivedClass, ITS_PSTR ITS_I2 ITS_PSTR) ON_PARSE_COMMAND_PARAMS("string integer string2='Default value'") DEFAULT_PARSE_COMMAND(Myfunc3, CDerivedClass) ON_PARSE_COMMAND(Myfunc3, CDerivedClass, ITS_RAW) // Различное число параметров END_PARSE_MAP(CDerivedClass)

// Функции, выполняемые для обработки команд void Myfunc(CHttpServerContext* pCtxt, LPTSTR pszName, int nNumber) { } // Первый параметр стандартен для всех функций, // обрабатывающих команды, тип второго и третьего // параметра был указан в макросе ON_PARSE_COMMAND void Myfunc2(CHttpServerContext* pCtxt, LPTSTR pszName, int nNumber, LPTSTR pszTitle) { } void CDerivedClass::Myfunc3( // Используется тип параметров // ITS_RAW CHttpServerContext* pCtxt, void* pVoid, // pVoid - указатель на передаваемые данные DWORD dwBytes) // dwBytes - количество переданных байтов данных { }

Листинг 28.2.



Содержание раздела