当前位置: 首页 > news >正文

[IE编程] 多页面基于IE内核浏览器的代码示例

有不少人发信问这个问题,我把答案贴在这里: 建议参考 WTL (Windows Template Library) 的代码示例工程 TabBrowser (在WTL目录\Samples\TabBrowser 下面)。该工程演示了如何用WTL + IE WebBrowser接口开发一个多Tab的IE内核浏览器, 并演示如何用ATL的IDispEventSimpleImpl监听DWebBrowserEvents2 事件, 代码简洁易懂,很有参考价值。

WTL 是微软的开源项目,可以去 http://wtl.sourceforge.net/上下载。

TabBrowser 代码在Visual Studio 2008 上会有编译错误

1>c:\projects\wtl80\samples\tabbrowser\stdafx.h(33) : error C2065: '_stdcallthunk' : undeclared identifier
1>c:\projects\wtl80\samples\tabbrowser\stdafx.h(33) : error C2070: ''unknown-type'': illegal sizeof operand

解决方案: 在stdafx.h 里面加入#include <atlstdthunk.h>

#include <atlbase.h>
#include <atlstdthunk.h> // 插入这行代码可以解决VS2008 下的编译错误

#ifdef _VC80X
// Support for VS2005 Express & SDK ATL
namespace ATL
{
inline void * __stdcall __AllocStdCallThunk()
{
return ::HeapAlloc(::GetProcessHeap(), 0, sizeof(_stdcallthunk));
}

inline void __stdcall __FreeStdCallThunk(void *p)
{
::HeapFree(::GetProcessHeap(), 0, p);
}
};
#endif // _VC80X

截图:

开发基于IE8内核浏览器

如果想用MFC而不用ATL/WTL, MSDN 上有一个MFCIE 的代码示例工程值得参考

http://msdn.microsoft.com/en-us/library/ms177540(VS.80).aspx

另外, Codeproject 上有一篇文章"WTL Browser"也不错 http://www.codeproject.com/KB/wtl/wtlbrowser.aspx

>> 原创文章的版权属于作者,转载请注明出处和作者信息(http://blog.csdn.net/WinGeek/), 谢谢。 <<

相关文章:

  • LeetCode -- 求字符串数组中的最长公共前缀
  • 怎样写 Linux LCD 驱动程序
  • LeetCode -- 帕斯卡三角形
  • SQL2005CLR函数扩展-正则表达式
  • LeetCode - Merge Intervals
  • LeetCode -- Three Sum
  • SQL2005CLR函数扩展-字符串函数
  • 算法面试题-- 连接树的所有兄弟节点
  • 怀念穆大叔
  • LeetCode -- Flatten 二叉树
  • [IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
  • LeetCode -- 查找最小公共祖先
  • 8位程序员对Oracle收购Sun的担忧与期待
  • LeetCode -- 顺时针旋转图片90度
  • LeetCode -- Path Sum ||
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【刷算法】求1+2+3+...+n
  • canvas 五子棋游戏
  • Docker: 容器互访的三种方式
  • extjs4学习之配置
  • HTTP请求重发
  • Intervention/image 图片处理扩展包的安装和使用
  • jquery cookie
  • LintCode 31. partitionArray 数组划分
  • PaddlePaddle-GitHub的正确打开姿势
  • Python学习笔记 字符串拼接
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue:响应原理
  • Vultr 教程目录
  • XForms - 更强大的Form
  • 对象引论
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 基于遗传算法的优化问题求解
  • 前端技术周刊 2019-01-14:客户端存储
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 主流的CSS水平和垂直居中技术大全
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​ubuntu下安装kvm虚拟机
  • #DBA杂记1
  • %check_box% in rails :coditions={:has_many , :through}
  • (12)目标检测_SSD基于pytorch搭建代码
  • (C语言)fread与fwrite详解
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (备忘)Java Map 遍历
  • (数据结构)顺序表的定义
  • (一)UDP基本编程步骤
  • (转)Oracle存储过程编写经验和优化措施
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET 解决重复提交问题