一个网页内有二个Activex,能互相通讯吗? 二个Object互相保存对方接口,能互相调用不?如果不能,是不是只有做成一个这种解决方法了? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以,只要他们都把对方 import 进去就可以了。 不会慢很多要是你会DHTML分析和ActiveX访问DHTML的话,你可以让两个Object的参数互相传递对方ID,可以不用脚本 让两个Object的参数互相传递:可以考虑用事件与连接点方法!在ATL里有这个选项 两个组建间知道对方的CLSID,就可以调用对方的方法了!你的问题不需要互相保存对方接口啊! 那算是的吧,<OBJECT id = "id1" ......<OBJECT id = "id2" ......id1.setid2(id1)??这样写可以不? id1.setid2(id2)这样用来保存id2的接口在ID1中? 说了这样需要你在控件中进行DHTML分析和访问DHTML对象模型了 请 jiangsheng(蒋晟.Net) 大侠 把下面的再说详细一点不会慢很多要是你会DHTML分析和ActiveX访问DHTML的话,你可以让两个Object的参数互相传递对方ID,可以不用脚本 KB Q172763 INFO: Accessing the Object Model from Within an ActiveX Control 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();} 请教LZW压缩算法的问题 Escomm::CComTcp是什么定义的 关于查看mfc80ud.dll这个的导出函数 请大家帮我解决下这个问题啊~~! 急!select 怎样用 cockhorse、 ytandwy、 blue2moon、 fengfeng059请进! 急,关于智能指针的一个小问题... VC的C++异常处理,最后还是调用了SEH吗? 关于多语言版本的问题 怎么获取FORMVIEW里的控件? 怎么让SDI的菜单变得可以拖动?怎么让自己在状态栏里加进的指示器大小可以跟着窗口的大小变化? 小弟刚学ACTIVE CONTROL 但不知道如何做代码调试?
要是你会DHTML分析和ActiveX访问DHTML的话,你可以让两个Object的参数互相传递对方ID,可以不用脚本
<OBJECT id = "id1" ......
<OBJECT id = "id2" ......
id1.setid2(id1)
??
这样写可以不?
这样用来保存id2的接口在ID1中?
要是你会DHTML分析和ActiveX访问DHTML的话,你可以让两个Object的参数互相传递对方ID,可以不用脚本
{
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();
}