显示内存中的HTML内容

2016-02-19 14:27 31 1 收藏

今天图老师小编给大家精心推荐个显示内存中的HTML内容教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - 编程语言 】

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

思路:

  先用WebControl显示一个空的HTML文件(对于WebControl的用法有了解),然后利用接口IID_IHTMLDocument2,来重新设置Body标记内的InnerHTML属性。(需要对DHTML有了解)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

实现方法:

  从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);
  }

  示范代码的阅读:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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

来源:https://www.tulaoshi.com/n/20160219/1606989.html

延伸阅读
标签: Web开发
今天,大多数视频是通过插件(比如 Flash)来显示的。然而,并非所有浏览器都拥有同样的插件。 HTML5 规定了一种通过 video 元素来包含视频的标准方法。 在HTML5中,video元素目前支持三种格式的视频文件, 1.Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件 2.MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件 3.Web...
标签: word
在Word2010文档中突出显示查找到的内容 在Word2010文档中可以突出显示查找到的内容,并为这些内容标识永久性标记。即使关闭查找和替换对话框,或针对Word2010文档进行其他编辑操作,这些标记将持续存在。在Word2010中突出显示查找到的内容的步骤如下所述: 第1步,打开Word2010文档窗口,在开始功能区单击编辑分组的查找下拉三角按钮...
标签: Web开发
HTML字符实体(Character Entities) 有些字符在HTML里有特别的含义,比如小于号就表示HTML Tag的开始,这个小于号是不显示在我们最终看到的网页里的。那如果我们希望在网页中显示一个小于号,该怎么办呢? 这就要说到HTML字符实体(HTML Character Entities)了。 一个字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫am...
标签: ASP
  dddggg [原作] Function SwitchExcelInfo(xlsFileName) Dim xlsStr Dim rs Dim i,j,k Dim ExcelConn Dim ExcelFile Dim objExcelApp Dim objExcelBook Dim bgColor xlsStr = "" ExeclFile = Server.MapPath(xlsFileName) Set objExcelApp = CreateObject("Excel.Application") objExcelApp.Quit Set objExcelApp = CreateObject("...
标签: Web开发
发布日期:2008-02-12 更新日期:2008-02-19 受影响系统: Microsoft Internet Explorer 7.0 Microsoft Internet Explorer 6.0 SP1 Microsoft Internet Explorer 6.0 Microsoft Internet Explorer 5.01 描述: BUGTRAQ ID: 27668 CVE(CAN) ID: CVE-2008-0076 Internet Explor...

经验教程

764

收藏

16
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部