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

新手,使用流加载内存中的HTML文件的有关问题

2012-08-11 
新手,使用流加载内存中的HTML文件的问题。C/C++ codevoid CWlyGView::OnInitialUpdate(){CHtmlView::OnInit

新手,使用流加载内存中的HTML文件的问题。

C/C++ code
void CWlyGView::OnInitialUpdate(){    CHtmlView::OnInitialUpdate();    Navigate2(_T("about:blank"),NULL,NULL);}int CWlyGView::ShowHtml(CString strHtml){    CoInitialize(NULL);     CComPtr<IHTMLDocument2> pDoc;    pDoc = (IHTMLDocument2*)this->GetHtmlDocument();    ASSERT(pDoc);    CComQIPtr<IPersistStreamInit> spPersistStream(pDoc);    if(spPersistStream==NULL)        return 0;    LPTSTR lpMem = (LPTSTR)::GlobalAlloc( GPTR,strHtml.GetLength()+1);    lstrcpy(lpMem,strHtml.GetBuffer());    CComPtr<IStream>spStream;    CreateStreamOnHGlobal( lpMem, TRUE, &spStream );    // 初始化后,装载显示    spPersistStream->InitNew();    spPersistStream->Load(spStream );    return 0;}

------------------------
下面是调用代码
C/C++ code
void CHTTPDlg::OnBnClickedButtonHttptext(){    // TODO: 在此添加控件通知处理程序代码    CMainFrame* pCMF = (CMainFrame*)AfxGetApp()->m_pMainWnd;    CWlyGView* pCWV = (CWlyGView*)pCMF->GetActiveView();    CString url ="...";    CString urll ="...";    /*pCWV->Navigate2(urll,NULL,NULL);*/        CString header = "";    header += "...";    header += "\r\n ";    header += "...    header += "\r\n ";    header += "...";    header += "\r\n ";    header += "...";    header += "\r\n ";    header += "...";    header += "\r\n ";    header += "Connection:    Keep-Alive";    header += "\r\n ";    header += "\r\n ";    header += "Host:    ";    header += "\r\n ";    header += "Referer:    ";    header += "\r\n ";    header += "User-Agent:        header += "\r\n ";    header += "\r\n ";    CString PostData = " ";    CHttp* pCHttp = new CHttp;    CString retHtml = pCHttp->post(url,header,PostData);    pCWV->ShowHtml(retHtml);}

程序运行后HTML文件中的CSS,JS文件路径解析错误,因为当前视图初始化时直接导航到about:blank了。
查了一下IHTMLDocument2是可以设置URL的啊,尝试了下put_url不成功。求大虾指导,谢谢。

[解决办法]
就是把IPersistStreamInit换成IPersistMoniker
spStream换成你自己的IMoniker实现
这个实现需要在GetDisplayName的时候返回URL
在BindToStorage的时候返回数据
参考http://support.microsoft.com/kb/178059

热点排行