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;
}示范代码的阅读:
上面提到的三点是基本的方法,但是要阅读我找到的这份代码需要做一点特别的说明。关于IHTMLDocument2的获得是在文件装入结束后才查询此接口。