IHTMLDocument2接口的简单操作

这几天写的程序中要用到这方面的东西,写了个很简单的例子.
  1. //必须包含的头文件
  2. #include <atlbase.h>
  3. #include "atlconv.h"
  4. #include "Mshtml.h"
  5. /*********************************************************************
  6. * 函数名称:int CErrKbaseDHtmlView::MM_FAULTKBASE& refKBaseInfo
  7. * 说明:刷新HTMLVIEW页面内容
  8. * 入口参数:
  9. * 空
  10. * 返回值:
  11. * int -- 
  12. * 作者: socrates
  13. * 时间 : 2008-08-01 15:37:39
  14. * 备注 : 
  15. *********************************************************************/
  16. int CErrKbaseDHtmlView::RefreshPage(MM_FAULTKBASE& refKBaseInfo)
  17. {
  18.     USES_CONVERSION;
  19.     CComPtr<IHTMLDocument2>pDoc;
  20.     CComPtr<IDispatch>spDisp;
  21.     spDisp = GetHtmlDocument();
  22.     
  23.     CString strHtml= "<html><head><title>kcmm_errkbase</title>/
  24.         <style type= 'text/css'><!--/
  25.         body,td,th {font-size: 12px; color: #990000;} .style5 {color: #000099}/
  26.         --></style></head>/
  27.         <body><table width='732' height='490' border='1' bordercolor='#999999' bgcolor='#FFFFFF'>/
  28.         <tr><td width='73' height='28'><span class='style5'>故障名称:</td><td width='643'>";
  29.         strHtml += refKBaseInfo.strFaultName;
  30.         strHtml += "</td></tr><tr><td height='27'><span class='style5'>故障类型:</td><td>";
  31.         strHtml += refKBaseInfo.strFaultType;
  32.         strHtml += "</td></tr><tr><td height='31'><span class='style5'>故障级别:</td><td>严重级</td></tr>/
  33.         <tr><td height='31'><span class='style5'>影响范围:</td><td>";
  34.         strHtml += refKBaseInfo.strFaultIncidence;
  35.         strHtml += "</td></tr><tr><td height='62'><span class='style5'>故障来源:</td><td>1.运行复杂业务查询;2.病毒</td></tr>/
  36.         <tr><td height='68'><span class='style5'>产生原因:</td><td>";
  37.         strHtml += refKBaseInfo.strFaultReason;
  38.         strHtml += "</td></tr><tr><td height='68'><span class='style5'>处理流程:</td><td>关机->重启</td></tr>/
  39.         <tr><td height='80'><span class='style5'>处理方法:</td><td>";
  40.         strHtml += refKBaseInfo.strHandleMethod;
  41.         strHtml += "</td></tr><tr><td height='73'><span class='style5'>备注信息:</td><td>略</td></tr>/
  42.         </table><marquee direction='up' align='middle' scrolldelay='120'>此知识库仅提供参考信息,并非是最全威信息<br>/
  43.         如有其他问题,请联系金证工程师<br>联系方式:dyx1024@gmail.com</marquee></body></html>";
  44.         CRect rc;
  45.         GetClientRect(&rc); 
  46.         CString strIn;
  47.         strIn = strHtml;
  48.         
  49.         CComQIPtr<IPersistStreamInit> spPersistStream(spDisp);
  50.         if(spPersistStream==NULL)
  51.             return 0;
  52.         
  53.         LPTSTR lpMem = (LPTSTR)::GlobalAlloc(GPTR,strIn.GetLength()+1);
  54.         lstrcpy(lpMem,strIn.GetBuffer(strIn.GetLength()));
  55.         
  56.         CComPtr<IStream>spStream;
  57.         CreateStreamOnHGlobal( lpMem, TRUE, &spStream );
  58.         // 初始化后,装载显示
  59.         spPersistStream->InitNew();
  60.         spPersistStream->Load(spStream );
  61.         return 0;
  62. }
  63. /*********************************************************************
  64. * 函数名称:BOOL PreTranslateMessage(MSG* pMsg) 
  65. * 说明:屏蔽HTMLVIEW页面的右键功能
  66. * 入口参数:
  67. * 空
  68. * 返回值:
  69. * int -- 
  70. * 作者: socrates
  71. * 时间 : 2008-08-01 15:37:39
  72. * 备注 : 
  73. *********************************************************************/
  74. BOOL CErrKbaseDHtmlView::PreTranslateMessage(MSG* pMsg) 
  75. {
  76.     if(!m_bDisplay)//屏蔽与否的开关
  77.     {
  78.         switch(pMsg->message)
  79.         {
  80.         case WM_CONTEXTMENU:
  81.         case WM_RBUTTONUP:
  82.         case WM_RBUTTONDOWN:
  83.         case WM_RBUTTONDBLCLK:
  84.             if(IsWindow(pMsg->hwnd))
  85.             {
  86.                 if(pMsg->wParam == WM_RBUTTONUP)
  87.                 {
  88.                     GetParent()->SendMessage(WM_CONTEXTMENU, pMsg->wParam, pMsg->lParam);
  89.                 }
  90.                 return TRUE;
  91.             }
  92.         }
  93.     }
  94.     
  95.     return CHtmlView::PreTranslateMessage(pMsg);
  96. }

posted @ 2008-08-02 22:24  Socrates  阅读(1224)  评论(0编辑  收藏  举报