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

使用 IID_IHTMLWindow2 带来的崩溃有关问题

2012-12-15 
使用 IID_IHTMLWindow2 带来的崩溃问题因为需要将另外一个页面设置为跟框架页面一样的 opener 所以需要获

使用 IID_IHTMLWindow2 带来的崩溃问题
因为需要将另外一个页面设置为跟框架页面一样的 opener 所以需要获取保存框架的opener 那就必须得到 IID_IHTMLWindow2接口,   我的思路是通过 IWebBrowser2 调用 get_Document2 由它调用 get_frames  在Item里面得到varResult.pdispVal->QueryInterface(得到 需要的 IDD_IHTMLWindow2 接口)  问题有的地址可以,有的地址在 执行 item(&varInde,&varResult);得到 varResult是空值。
  谁能帮忙讲讲   IHTMLFramesCollection2接口。

[最优解释]
首先你是否应该通过IHTMLFramesCollection2的get_length获得你获得的这个集合的元素个数,如果不存在元素,你想通过下标为0获得元素也是不可能的吧。
其次
pvarResult [out, retval]
Type: VARIANT
A VARIANT of type VT_DISPATCH that receives an IHTMLWindow2 interface for the object, if successful.
你是否要判断下varResult.dispVal是否为NULL再使用呢?
[其他解释]
代码  
IHTMLDocument2* pDoc =NULL;
IHTMLWindow2 * pwin = NULL;
IHTMLFramesCollection2* pFrames = NULL;
if(pWebBrowser)
{
   pWebBrowser->get_Document((IDispatch**)&pDoc);
   HRESULT hr = pDoc->get_frames(&pFrames);
   if(hr == S_OK)
  {
     if(pFrames)
    {
       VARIANT varInde,varResult;
       VariantInit(&varInde);
       VariantInit(&varResult);
       varInde.vt = VT_I4;
       varInde.bstrVal = (BSTR)0;
       pFrames->item(&varInde,&varResult);
       varResult.dispVal->QueryInterface(IID_IHTMLWindow2, (void**)&pwin);
       pFrames->Release();
    }
  }

[其他解释]
求高手啊。求高手
[其他解释]
mark

热点排行