ActiveX控件访问所在网页的DHTML文档对象模型(MFC)#
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);
}
ASF学习笔记 Part 2
使用虚列表和自画实现文件夹的缩略图显示