显示内存中HTML内容的方法

本文介绍了一种使用WebControl显示内存中html内容的技术,包括如何使用WebControl显示资源中的html文件,以及如何修改body标记内innerhtml属性。此外,还提供了一个示例代码,帮助开发者实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

ie webcontrol控件提供了显示html的功能,但是只能够显示url或者是文件。很多朋友都询问关于显示内存中html内容的方法,前几天我在网上找到一段代码,我在这里进行一些讲解。

思路:

先用webcontrol显示一个空的html文件(对于webcontrol的用法有了解),然后利用接口iid_ihtmldocument2,来重新设置body标记内的innerhtml属性。(需要对dhtml有了解)

实现方法:

从chtmlview派生新类cmorehtmlview。

显示空的html文件,可以直接利用navigate2方法,你可以指定一个默认的html文件,不过webcontrol还可以显示定义在资源中的内容,根据res protocol的定义,显示使用资源中的数据时用下面的表示方法:

res://sfile[/stype]/sid

sfile:表示包含资源的文件

stype:资源的类型,例如rt_html或者你自己定义的资源类型,省略时为rt_html,

sid:资源id

实例代码

void cmorehtmlview::navigatememory()

{

//get application name

cstring sappname=afxgetappname();

cstring sresourseid;

//get resourse id of empty html

sresourseid.format("%d", idr_empty_html);

cstring snavigatepath;

//compile

snavigatepath="res://"+sappname+".exe/"+sresourseid;

navigate2( snavigatepath); //装入资源中的html文件 此行实现功能

//activate memory mode

m_bmemorymode=true;

}

修改body标记内innerhtml属性。

实例代码

bool cmorehtmlview::putbodycontent(lpstr lpstrcontent)

{

//store body content

if( lpstrcontent) m_lpstrbodycontent=lpstrcontent;

//check if htmldocument initialized

if( m_phtmldoc2) //m_phtmldoc2 指向接口 iid_ihtmldocument2

{

hresult hr = s_ok;

ihtmlelement *pbodyelement;

//get body element

hr=m_phtmldoc2->get_body( &pbodyelement); //得到body标记

//put content to body element

_bstr_t pbbody( m_lpstrbodycontent);

hr=pbodyelement->put_innerhtml( pbbody); //设置html标记内内容

if( hr==s_false) return false;

else return true;

}

else return false;

}

如何得到ihtmldocument2

void cmorehtmlview::ondocumentcomplete(lpctstr lpszurl)

{

// show html on first loading of document

if(m_bmemorymode)

{

lpdispatch lpdispatch;

lpdispatch=gethtmldocument();

assert(lpdispatch);

//get html document from idispatch

hresult hr=lpdispatch->queryinterface(iid_ihtmldocument2, (void**)&m_phtmldoc2); //此行实现功能

if( succeeded(hr)) showmemoryhtml();

}

chtmlview::ondocumentcomplete(lpszurl);

}

示范代码的阅读:

上面提到的三点是基本的方法,但是要阅读我找到的这份代码需要做一点特别的说明。关于ihtmldocument2的获得是在文件装入结束后才查询此接口。

绿色通道:好文要顶关注我收藏该文与我联系


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值