显示内存中的HTML内容

吴桥羽毛球群

吴桥羽毛球群

2016-02-19 14:27

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

  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

  实例代码

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

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

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

  示范代码的阅读:

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

展开更多 50%)
分享

猜你喜欢

显示内存中的HTML内容

编程语言 网络编程
显示内存中的HTML内容

去除内容中的html

Web开发
去除内容中的html

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

javascript网页中显示硬盘内容

电脑网络
javascript网页中显示硬盘内容

html中select语句读取mysql表中内容

PHP
html中select语句读取mysql表中内容

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

XUL中如何插入一段HTML内容

Web开发
XUL中如何插入一段HTML内容

如何改变CppWebBrowser的Html内容

Web开发
如何改变CppWebBrowser的Html内容

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

VC无闪烁刷屏技术的实现

VC无闪烁刷屏技术的实现

扔掉Socket实现网络编程

扔掉Socket实现网络编程
下拉加载更多内容 ↓