dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>C/C++技术资料>文章内容
显示内存中的HTML内容
来源:vchelp     作者:    
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的获得是在文件装入结束后才查询此。

 

 

上一篇:ado方式访问带密码数据库的方法   下一篇:让你的控制台程序也支持自动补齐
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言数组排序小结
·Python 与 C++ 程序的简单实例对
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
·C++初学者应该关心的优秀图书一
·利用C语言小程序来解决大问题
·用C语言写PHP扩展的步骤
·用C语言扩展PHP功能
  相关文章
·ado方式访问带密码数据库的方法
·让你的控制台程序也支持自动补齐
·经验总结之防止窗口闪烁的方法
·窗口类的诞生(注册自己的窗口类)
·VC++5.0下MIDI、WAV及CD的播放
·窗口类的诞生(注册自己的窗口类)
·Win32 核心 DPC 设计思想和实现
·Gzip Zlib PNG 压缩算法,源码详
·处理内存泄漏的一种MFC方法
·重载函数的应用与深入剖析
·VC++的链接错误LNK2001
·一个对Winsock完成端口模型封装
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763