在MFC对话框中显示html网页

本文介绍如何在MFC应用中的对话框显示HTML网页,通过CHtmlCtrl类扩展CHtmlView,实现了隐藏上下文菜单、设置HTML内容、处理自定义"app:"协议等功能。通过创建和设置HTMLCMDMAP结构,可以映射链接到命令ID,使得点击链接能够执行相应操作。
摘要由CSDN通过智能技术生成

头文件:

[cpp]  view plain   copy
  print ?
  1. #pragma once  
  2. #include <afxhtml.h>  
  3. #include <atlsafe.h>  
  4.   
  5. // 该结构在命令映射中定义一个入口,这个映射将文本串映射到命令IDs,  
  6. // 如果命令映射中有一个映射到 ID_APP_ABOUT 的入口 “about”,并且  
  7. // HTML 有一个链接锚 ,那么单击该链接时将执行  
  8. struct HTMLCMDMAP  
  9. {  
  10.     LPCTSTR name;  
  11.     int nID;  
  12. };// command name used in "app:name" HREF in  
  13. //这个类将 CHtmlView 转换为普通的能在对话框和框架中使用的控制  
  14. class CHtmlCtrl : public CHtmlView  
  15. {  
  16.     DECLARE_DYNCREATE(CHtmlCtrl)  
  17. public:  
  18.     CHtmlCtrl():m_bHideMenu(FALSE), m_cmdmap(NULL){}; // protected constructor used by dynamic creation  
  19.     virtual ~CHtmlCtrl(){};  
  20.     HTMLCMDMAP* m_cmdmap;// command map  
  21.     BOOL m_bHideMenu;// hide context menu  
  22.     // get/set HideContextMenu property  
  23.     BOOL GetHideContextMenu(){ return m_bHideMenu; }  
  24.     void SetHideContextMenu(BOOL val){ m_bHideMenu=val; }  
  25.     // Set doc contents from string  
  26.     HRESULT SetHTML(LPCTSTR strHTML);  
  27.     // set command map  
  28.     void SetCmdMap(HTMLCMDMAP* val){ m_cmdmap = val; }  
  29.     // create control in same place as static control  
  30.     BOOL CreateFromStatic(UINT nID, CWnd* pParent);  
  31.     // create control from scratch  
  32.     BOOL Create(const RECT& rc, CWnd* pParent, UINT nID,DWORD dwStyle = WS_CHILD|WS_VISIBLE,CCreateContext* pContext = NULL)  
  33.     {  
  34.         return CHtmlView::Create(NULL, NULL, dwStyle, rc, pParent,nID, pContext);  
  35.     }  
  36.     // 重写该函数可以截获子窗口消息,从而禁用上下文菜单。  
  37.     virtual BOOL PreTranslateMessage(MSG* pMsg);  
  38.     // 通常,CHtmlView 自己是在 PostNcDestroy 销毁的,但对于一个界面控制来说  
  39.     // 我们不想那样做,因为控制一般都是作为另一个窗口对象的成员实现的。  
  40.     virtual void PostNcDestroy(){}  
  41.     // 重写以便旁路掉对 MFC doc/view 框架的依赖,CHtmView 仅仅在这里依附于框架。  
  42.     afx_msg void
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值