首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎样根据iframe的name获取内嵌的iframe的ihtmldocument2

2012-03-08 
【急】怎样根据iframe的name获取内嵌的iframe的ihtmldocument2?马上春节了,还有点任务没有完成,各个大大帮忙

【急】怎样根据iframe的name获取内嵌的iframe的ihtmldocument2?
马上春节了,还有点任务没有完成,各个大大帮忙啊

[解决办法]
http://topic.csdn.net/t/20030826/12/2188599.html
[解决办法]
蒋大侠的正解~

如果你急的话这里有封装好的函数:
getFrameDocumentById
http://www.codeguru.com/cpp/i-n/internet/browsercontrol/article.php/c13065

C/C++ code
HRESULT getFrameDocumentById(IHTMLDocument2* topLevelDocument,                             LPOLESTR frameId,                             IHTMLDocument2** frameDocument){   HRESULT hresult = E_FAIL;   CComPtr<IOleContainer> container;   HRESULT hr = topLevelDocument->QueryInterface(IID_IOleContainer,                                                 (void**)&container);   if (hr == S_OK)    {      CComPtr<IEnumUnknown> enumerator;      // Get an enumerator for the frames       hr = container->EnumObjects(OLECONTF_EMBEDDINGS, &enumerator);      if (hr == S_OK)       {         CComPtr<IUnknown> unk;         ULONG uFetched;         // Enumerate and refresh all the frames         for (UINT i = 0; S_OK == enumerator->Next(1, &unk,              &uFetched); i++)          {            CComPtr<IWebBrowser2> browser;            // QI for IWebBrowser here to see if we have an embedded            // browser            hr = unk->QueryInterface(IID_IWebBrowser2,                                     (void**)&browser);            if (hr == S_OK)             {                CComPtr<IHTMLElement> htmlElement;               unk->QueryInterface(IID_IHTMLElement,                                   (void**)&htmlElement);               CComBSTR id;               if (SUCCEEDED(htmlElement->get_id(&id)) && id)               {                  CComPtr<IDispatch> disp;                  browser->get_Document(&disp);                  if (disp != NULL )                  {                      CComPtr<IHTMLDocument2> frameDoc;                     hr = disp->QueryInterface( IID_IHTMLDocument2,                                               (void**)&frameDoc);                        if (hr == S_OK)                        {                           if (!wcscmp(id, frameId))                           {                              *frameDocument = frameDoc;                              (*frameDocument)->AddRef();                              hresult = S_OK;                              break;                        }                     }                  }               }            }         }      }   }   return hresult;} 

热点排行