ON_PARSE_COMMAND

ON_PARSE_COMMAND( FnName, mapClass, Args )

参数:
FnName成员函数的名字。也是命令的名字。
mapClass要把函数映射到的类的名字。
Args映射到FnName的参数。符号的列表参见说明部分。

说明:
ON_PARSE_COMMAND宏被用于解析映射,用来定义从客户发送到CHttpServer对象的命令。
FnName表示的成员函数必须以一个指向CHttpServerContext对象的指针作为它的第一个参数。FnName属于LPSTR类型,用解析映射中的符号ITS_LPSTR来标识,这意味着,FnName指向一个包含了mapClass类的成员函数名的字符串。
参数Args可以取下列值之一:
符号类型或注释
ITS_EMPTYArgs不能为空白。如果你没有参数,则使用ITS_EMPTY
ITS_PSTR字符串指针
ITS_RAW精确的行数据发送到ISAPI扩展,不要使用具有任何其它参数类型的ITS_RAW;若使用了,则导致ASSERT。参见“Remarks”中的示例
ITS_I2一个short值
ITS_I4一个long值
ITS_R4一个float值
ITS_R8一个double值

示例:
/ /  The following example Illustrates extracting
/ /  a string and a short sent to the server:
BEGIN_PARSE_MAP(CDerivedClass, CHttpServer)
  DEFAULT_PARSE_COMMAND(Myfunc, CDerivedClass)
  ON_PARSE_COMMAND(Myfunc, CDerivedClass, ITS_PSTR  ITS_I2)
  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'")
END_PARSE_MAP(CDerivedClass)
注意:如果你在可选的ITS_PSTR的缺省值中加入空格,使用单引号。
void Myfunc(CHttpServerContext* pCtxt, LPTSTR pszName, int nNumber);
void Myfunc2(CHttpServerContext* pCtxt, LPTSTR pszName, int nNumber, LPTSTR pszTitle);
// 下面的例子演示了提取发送给服务器的原始数据
BEGIN_PARSE_MAP(CDerivedClass, CHttpServer)
  DEFAULT_PARSE_COMMAND(Myfunc, CDerivedClass)
  ON_PARSE_COMMAND(Myfunc, CDerivedClass, ITS_RAW)
END_PARSE_MAP(CDerivedClass)
函数原型如下:
void CDerivedClass::Myfunc(CHttpServerContext* pCtxt, void* pVoid, DWORD dwBytes);
在第二个例子中,pVoid指针指向发送给你的扩展部分的数据。dwBytes参数是pVoid所指向的字节数目。如果dwBytes为零,pVoid可能不指向任何内容。
注意:
解析映射命令的处理函数必须以指向CHttpServerContext对象的指针为第一个参数,参数必须按照与ON_PARSE_COMMAND中相同的顺序定义。

请参阅:
BEGIN_PARSE_MAP, END_PARSE_MAP, ON_PARSE_COMMAND_PARAMS, DEFAULT_PARSE_COMMAND, CHttpServer