紧急求救!!!!!紧急求救!!!!!300分求解!
MSDN 上说过Loading HTML content from a Stream ,参见:
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/hosting/wbcustomization.asp
但如果我的页面中包含了多个帧,那么怎样才能获得正确的IPersistStreamInit Interface 呢??
CComPtr<IHTMLFramesCollection2> pFrameCol ;
hr = m_pMainDoc->get_frames(&pFrameCol);
ASSERT(pFrameCol != NULL);
_variant_t vIndex("MainFrame");
_variant_t vDispatch;
hr = pFrameCol->item(&vIndex,&vDispatch);
ASSERT(SUCCEEDED(hr));
CComPtr<IHTMLWindow2> pIWin2;
hr = vDispatch.pdispVal->QueryInterface(IID_IHTMLWindow2, (void**)&pIWin2);
ASSERT(pIWin2 != NULL);
#ifdef _DEBUG
BSTR bsName;
hr = pIWin2->get_name(&bsName);
ASSERT(SUCCEEDED(hr));
CString strName(bsName);
ASSERT(strName == "MainFrame");
#endif
hr = pIWin2->get_document(&m_pMainFrameDoc);
ASSERT(SUCCEEDED(hr));
CComQIPtr<IPersistStreamInit>pPSI(m_pMainFrameDoc);
HRESULT hr = pPSI->InitNew(); //这里返回错误代码E_NOTIMPL
如果说从 m_pMainDoc 查询到的IPersistStreamInit接口,调用InitNew()方法肯定是成功的! 如此说来,如果是帧,则不能用Loading HTML content from a Stream 方法更新页面了?
用write可以,但如果页面复杂或者大一点,就会出现堆分配错误!如何解决呢????