描述:
各位大侠,我做了一个使用WEB BROSWER控件获取html源文件的代码,目标是将其保存在本地文件里,代码如下:
IHTMLDocument2 *pHTMLDocument=NULL;
IPersistStreamInit *pPSI=NULL;
ULONG ActualTextLength = 0;
IStream *pStream=NULL;
HGLOBAL hHTMLText;
if (!(pHTMLDocument = (IHTMLDocument2*)m_wndBrowser.get_Document())) //获取Document
return;
if (FAILED(pHTMLDocument->QueryInterface(&pPSI))) //获取IPersistStreamInit 指针
{
// pHTMLDocument->Release();
return;
}
//hHTMLText = GlobalAlloc(GMEM_FIXED, 10000);//分配内存
//memset((char*)hHTMLText,NULL,10000);//初始化清空
CreateStreamOnHGlobal(NULL, TRUE, &pStream);//将内存与流绑定
pPSI->Save(pStream, FALSE);//保存html到流对象
CString strMsg;
pStream->Read(strMsg.GetBuffer(),10000,&ActualTextLength);//我想把pStream流中的内容保存在CString 或是一个指针中
CString strPrint;
strPrint.Format("ActualTextLength:%d!", ActualTextLength);
AfxMessageBox( strPrint, MB_OK );
writefile(....);
不过ActualTextLength的值始终为0,感觉是没有读到东西,不知道是不是pStream的函数我没有用对?应该怎么改?
CreateStreamOnHGlobal函数的第一个参数我用的是NULL,是在其它帖子里看见的,我主要是因为不知道怎么获取网页的大小(请指点),又想让内存分配可以适应网页(不用分一个固定的很大的值,比如:10000...),所以创建了流后,想将其的内容保存在CString ,不知道用的对不对?
解决方案1:
IHTMLDocument2::QueryInterface --> IHTMLDocument3