IXMLHTTPRequest xmlrequest;hr=xmlrequest.CreateInstance("Msxml2.XMLHTTP");
hr=xmlrequest->open(_bstr_t("GET"),_bstr_t("http://aion.plaync.co.kr/"),_bstr_t("TRUE"));
xmlrequest->onreadystatechange=huidiaohanshu;
xmlrequest->send();xmlrequest->onreadystatechange=huidiaohanshu;     编译到这步的时候始终有错误错误提示:
chaDlg.cpp(129) : error C3867: “CchaDlg::huidiaohanshu”: 函数调用缺少参数列表;请使用“&CchaDlg::huidiaohanshu”创建指向成员的指针xmlrequest->onreadystatechange=huidiaohanshu();  改成这样就提示:
1>.\chaDlg.cpp(129) : error C2664: “MSXML2::IXMLHTTPRequest::Putonreadystatechange”: 不能将参数 1 从“void”转换为“IDispatch *”我用的是 onreadystatechange属性,不是Putonreadystatechange函数啊xmlrequest->onreadystatechange=&huidiaohanshu();  这样也不行

解决方案 »

  1.   

    IXMLHTTPRequest不是智能指针,你的代码是针对智能指针的
    要么改用智能指针,要么改用标准COM调用……
      

  2.   

    IXMLHTTPRequestPtr xmlrequest;还有,xmlrequest->onreadystatechange 虽然名义上叫回调函数,但不能传递真正的函数,只能传递 IDispatch*,在脚本中的函数也都是 IDispatch*
      

  3.   

    MSDN上的代码:
    BEGIN_DISPATCH_MAP(CXMLDOMSamples, CCmdTarget)
       DISP_FUNCTION_ID(CXMLDOMSamples, "Ready State Event Handler", 
       DISPID_XMLDOMEVENT_ONREADYSTATECHANGE, DOMDocCheckState, VT_EMPTY, 0)
    END_DISPATCH_MAP()m_hr = pCP->Advise(GetIDispatch(TRUE), &m_pdwCookie); ATL的话可以用IDispEventSimpleImpl等来实现事件回调
      

  4.   


    只能指针要如何改呢,能给出几行代码么标准COM,是不是要创建一个类,实现IDispatch 接口呢
      

  5.   

    CoCreateInstance
    调用接口方法之后要检查返回值
    用完Release
      

  6.   

    如果实现COM事件组件,可参考
    vc++访问javascript(5)--绑定网页元素的事件
    http://blog.csdn.net/pimshell/archive/2008/08/05/2773717.aspx