二个Object互相保存对方接口,能互相调用不?
如果不能,是不是只有做成一个这种解决方法了?

解决方案 »

  1.   

    可以,只要他们都把对方 import 进去就可以了。
      

  2.   

    不会慢很多
    要是你会DHTML分析和ActiveX访问DHTML的话,你可以让两个Object的参数互相传递对方ID,可以不用脚本
      

  3.   

    让两个Object的参数互相传递:可以考虑用事件与连接点方法!在ATL里有这个选项
      

  4.   

    两个组建间知道对方的CLSID,就可以调用对方的方法了!你的问题不需要互相保存对方接口啊!
      

  5.   

    那算是的吧,
    <OBJECT id = "id1" ......
    <OBJECT id = "id2" ......
    id1.setid2(id1)
    ??
    这样写可以不?
      

  6.   

    id1.setid2(id2)
    这样用来保存id2的接口在ID1中?
      

  7.   

    说了这样需要你在控件中进行DHTML分析和访问DHTML对象模型了
      

  8.   

    请  jiangsheng(蒋晟.Net) 大侠 把下面的再说详细一点不会慢很多
    要是你会DHTML分析和ActiveX访问DHTML的话,你可以让两个Object的参数互相传递对方ID,可以不用脚本
      

  9.   

    KB Q172763 INFO: Accessing the Object Model from Within an ActiveX Control
      

  10.   

    void CICWXPlayerCtrl::SetHolderID(CICWXPlayerWindowHolder::enumHolderIndex iHolderIndex,LPCTSTR lpszElementID)
    {
    IOleClientSite* pClientSite=GetClientSite(); 
    do{
    if(pClientSite==NULL)break;
    CComQIPtr<IServiceProvider> pISP(pClientSite);
    if(pISP==NULL)break;
    CComPtr<IWebBrowser2> pIWebBrowser2;
    pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2,
    (void **)&pIWebBrowser2);
    if(pIWebBrowser2==NULL)break;
    CComPtr<IDispatch> spDocument;
    pIWebBrowser2->get_Document(&spDocument);
    CComQIPtr<IHTMLDocument2> pIHTMLDocument2(spDocument);
    if(pIHTMLDocument2==NULL)break;
    CComPtr<IHTMLElementCollection> pHTMLElementCollection;
    pIHTMLDocument2->get_all(&pHTMLElementCollection);
    if(pHTMLElementCollection==NULL)break;
    COleVariant varName(lpszElementID,VT_BSTR);
    COleVariant varindex; CComPtr<IDispatch> spElement;
    pHTMLElementCollection->item(varName,varindex,&spElement);
    if(spElement==NULL)break;
    //is it an Iframe?
    CComQIPtr<IWebBrowser2> pFrame(spElement);
    if(pFrame){
    switch(iHolderIndex){
    case CICWXPlayerWindowHolder::WebHolder:
    case CICWXPlayerWindowHolder::TextHolder:
    m_holders[iHolderIndex].SetTarget(spElement);
    break;
    }
    }
    CComQIPtr<IHTMLObjectElement> pObjectElement(spElement);
    if(pObjectElement==NULL)break;
    CComPtr<IDispatch> spObject;
    pObjectElement->get_object(&spObject);
    m_holders[iHolderIndex].SetTarget(spObject);
    }
    while(FALSE);
    if(pClientSite)
    pClientSite->Release();
    }