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的获得是在文件装入结束后才查询此接口。

vc显示html文档,VC++ 显示内存中地HTML内容相关推荐

  1. php word 图片无法显示,Word文档不显示图片解决方法

    同事的文档中的图片都不显示了,问我怎么回事,这个问题我已经遇到很多次了,其实问题有多种,要逐一排查,下面icech就将所有可能的原因和解决方法列一下,供参考: 1.可能是由于正在普通视图或大纲视图中工 ...

  2. vc可以实现对话框里显示html文档内容,也可以显示word内容吗,VC6中使用CHtmlView在对话框控制中显示HTML文档...

    VC6中使用CHtmlView在对话框控制中显示HTML文档 2008-02-23 05:29:58来源:互联网 阅读 () 在Visual Studio 6.0中出现了一个新类CHtmlView,利 ...

  3. linux 查看 文档 不显示注释 命令

    原文:http://www.weiruoyu.cn/?p=661 最近发现一个很好的命令,就是linux 查看 文档 不显示注释 的命令 [root@localhost ha.d]# cat ha.c ...

  4. WPF:WPF显示PDF文档 之 编译 MoonPdfLib库

    简述   在之前一篇文章中,我讲述了如何使用WPF显示PDF文档,开发环境是VS2013 + .Net FrameWork4.5 + x64.因为后面我使用了.Net FrameWork 4.6.1, ...

  5. VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误...

    1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...

  6. 图标和文字跟着div比例放大缩小_Word文档页面显示比例与单页多页,文本的输入、修改、删除与插入...

    在默认情况下,文档页面都以100%显示,但最大可放大到500%,最小可缩小到10%,可根据自己的爱好设置.一般保持默认即可.另外,还可以设置一屏显示一页还是多页:此外,还能把文档设置为页宽. 在 Wo ...

  7. 转:在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档

    在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档 一直以来,我都想为 PDF 补丁丁添加一个 PDF 渲染引擎.可是,目前并没有可以在 .NET 框架上运行的免费 PDF ...

  8. MSDN帮助文档 无法显示该网页 的问题解决方案(转)

    MSDN帮助文档 "无法显示该网页" 的问题解决方案 以前就遇到过这样的问题,还以为是IE7导致的.后来重新安装了IE7也没有解决.后来就重新安装MSDN了,非常郁闷.今天终于知道 ...

  9. 解决WORD文档无法显示链接的图像问题

    解决WORD文档无法显示链接的图像问题 参考文章: (1)解决WORD文档无法显示链接的图像问题 (2)https://www.cnblogs.com/zhangjunrui/p/6659473.ht ...

最新文章

  1. Mysql数据库编码转换问题
  2. 4.1.2 数据交换方式
  3. 手动封装element-ui里面的button组件
  4. linux 笔记之一mysql源码包安装
  5. 不要根据自己的喜好创业
  6. 白帽黑客眼中的网络安全 挡黑客财路曾收恐吓信
  7. 阿里架构师手写Tomcat——Session源码解析
  8. NSCharacterSet 简单用法
  9. 你可以退部的,不必说抱歉
  10. 云计算呼叫中心_云呼叫中心是如何有效保护客户信息的?
  11. 雷石柏云服务器指令,雷石KTV人工智能,让歌唱更自由
  12. 爱荷华州立大学计算机科学,爱荷华州立计算机科学庆祝成立50周年
  13. 2022 年牛客多校第五场补题记录
  14. HTML5视频与字幕使用的介绍
  15. EMC设计理论通俗非科班学习笔记(完结)
  16. 计算机网络复习资料(前六章谢希仁版)
  17. 基于树莓派4b的ubuntu20.04mate配合思岚科技A1激光雷达读取数据,建图、保存和基于arduino的下位机控制
  18. arduino灯带随音乐_【创客玩音乐】用灯带让音乐可视化
  19. 国产信创Linux桌面系统比较:软件包格式及软件管理、桌面环境及桌面应用
  20. 没事别惹程序员_他们可是能毁灭地球的生物

热门文章

  1. ubuntu 16.04 安装anaconda tensorflow opencv keras openslide-python pycharm
  2. python文件读取方法read(size)的含义是_Python file read()方法
  3. 路由器DNS被劫持 解决办法、网站被劫持怎么办怎么解决
  4. 看了DOS中断后我内牛满面
  5. Docker的基本操作命令
  6. Home Assistant 开发指南
  7. 2013-10 阿丹励志笔记(1)
  8. 20200511-01 基于 QCustomPlot 移植到 QML 上(qt.514)
  9. oracle 查看考试成绩,oracle认证考试成绩如何查询?
  10. java改变字体_java字体设置