菜鸟求助:如何在单文档CHtmlView中追加显示内容 VC6.0

untitled_noon 2011-11-29 11:16:17
各位高手:
最近小弟正在做的一个测试程序,基于单文档的架构,要在界面实时显示测试报告,视图部分时从CHtmlView继承的。现在可以将内存中的HTML源码显示在界面,但是无法实现追加显示。(我所谓的追加显示,是指在原有内容的基础上再显示新的内容。)之前考虑过每次都刷新整个界面,新旧内容一起显示出来,如果测试时间比较久,显示内容太多的话效率会比较低。
向大家请教一下,怎么能够将原有内容保持在界面的情况下,追加显示新的内容。
下面是我显示内存中HTML内容的代码:
void CToolView::DisplayHtmlInMemory(CString strText)
{
LPDISPATCH lpDispatch;
lpDispatch = GetHtmlDocument();
ASSERT(lpDispatch);
CComQIPtr <IHTMLDocument2, &IID_IHTMLDocument2> pDoc2;
HRESULT hr;
hr = lpDispatch-> QueryInterface(IID_IHTMLDocument2, (void**)&pDoc2);
if(SUCCEEDED(hr))
{
IHTMLElement *pBodyElement;
pDoc2-> get_body( &pBodyElement);
BSTR body;
body=::_com_util::ConvertStringToBSTR(strText);
pBodyElement-> put_innerHTML(body);
pDoc2.Release();
}
lpDispatch-> Release();
}

我的另外一种显示方法:
程序启动时调用一次InitHtmlDisplay(),每次显示的时候再调用DisplayHtmlInMemory。
void CToolView::InitHtmlDisplay()
{
HRESULT hr;
m_lpDisp = GetApplication();

if (m_lpDisp == NULL)
{
return;
}

hr = m_lpDisp->QueryInterface(IID_IWebBrowser2, (void**)&m_pBrowser);
if (!SUCCEEDED(hr))
{
return;
}

hr = m_pBrowser->QueryInterface( IID_IUnknown, (void**)&m_pUnkBrowser);
if (!SUCCEEDED(hr))
{
return;
}

hr = m_lpDisp->QueryInterface( IID_IUnknown, (void**)&m_pUnkDisp );
if (!SUCCEEDED(hr))
{
return;
}

if ( AfxMessageBox!= m_pUnkDisp )
{
return;
}

hr = m_pBrowser->get_Document(&m_pHtmlDoc);
if (!SUCCEEDED(hr))
{
return;
}

hr = m_pHtmlDoc->QueryInterface(IID_IPersistStreamInit, (void**)&m_pPersistStreamInit);
if (!SUCCEEDED(hr))
{
return;
}

// 初始化文档.
hr = m_pPersistStreamInit->InitNew();
if (!SUCCEEDED(hr))
{
return;
}
}

void CToolView::DisplayHtmlInMemory(CString strText)
{
size_t cchLength=strText.GetLength();
hHTMLText = GlobalAlloc( GPTR, cchLength+1 );

if ( hHTMLText )
{
strcpy((TCHAR*)hHTMLText, (TCHAR *)strText.LockBuffer());
hr = CreateStreamOnHGlobal(hHTMLText, TRUE, &pStream);
if ( SUCCEEDED(hr) )
{
hr = m_pPersistStreamInit->Load( pStream );
pStream->Release();
}
strText.UnlockBuffer();
}
}

这两种方法,我大概都做过简单调整,可是都无法达到我的目的。
我之前没接触过HTML相关的东西,这一段翻了好多老帖(jiangsheng等前辈的帖子确实让人收获颇丰),但是小弟资质平平,举一反三的能力有限,还望大家赐教:)
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
untitled_noon 2011-11-29
  • 打赏
  • 举报
回复
又仔细查了一下MSDN,用insertAdjacentHTML可以实现我想要的功能...我土了...
感谢CSDN,感谢MSDN,感谢jiangsheng等大侠,感谢1楼...
untitled_noon 2011-11-29
  • 打赏
  • 举报
回复
To c_losed

谢谢你:)
不过,最初也想用list ctrl,可是测试报告的内容既有文本又有表格,list ctrl显示文本确实很方便,可是显示表格貌似不太行哈...小弟找了好久,最终才选择了CHtmlView...
c_losed 2011-11-29
  • 打赏
  • 举报
回复
代码没仔细看 说下简单思路
显示追加内容:
1.可以考虑用list control进行显示
2.在追加显示前获取现在列表里的index索引值 然后显示刷新下

3,056

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧