使用 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