转贴, 原帖在此: http://blog.csdn.net/cathyeagle/archive/2004/09/03/93984.aspx
引 言
这篇文章最先发表于2000年07月25日,最后一次修改是在2001年02月07日。这里再次贴出的目的,一是作为前一阶段的完结,所以文章中的错误都不作修改;二是希望作为一个新的起点。我准备整理一下至今所积累的浏览器编程的知识,比较完整地写出来,与网友共勉。
TWebBrowser编程简述
摘要:Delphi 3开始有了TWebBrowser构件,不过那时是以ActiveX控件的形式出现的,而且需要自己引入,在其后的4.0和5.0中,它就在封装好shdocvw.dll之后作为Internet构件组之一出现在构件面板上了。常常听到有人骂Delphi的帮助做得极差,这次的TWebBrowser又是Microsoft的东东,自然不会好到哪里去,虽说MSDN上什么都有,可是内容太过庞杂,如果没有入口点更是件烦人的事,查找起来给人的感觉大概可以用一句话来形容:非常复杂、复杂非常。
这里有平时我自己用TWebBrowser做程序的一些心得和上网收集到的部分例子和资料,整理了一下,希望能给有兴趣用TWebBrowser编程的朋友带来些帮助。
阅读全文…
Internet Explorer Programming
delphi, IE, Internet Explorer, TWebBrowser, WebBrowser
链接:上一部分;下一部分
第六部分 – 宿纳 ActiveX 控件
|
内容
- 简介
- 以 AppWizard 开始
- 使用资源编辑器添加控件
- 用于宿纳控件的 ATL 类
- CAxDialogImpl
- AtlAxWin 和 CAxWindow
- 调用控件的方法
- 接收控件激发的事件
- 在 VC 6 里添加处理器
- 在 VC 7 里添加处理器
- 事件的知会
- 示例工程概述
- 运行时创建 ActiveX 控件
- 键盘处理
- 下一步
- 修订历史
简介
在这第六部分里,我将介绍 ATL 对在对话框中宿纳(hosting)ActiveX 控件的支持。由于 ActiveX 控件是 ATL 的专项,所以这儿并没有相关的 WTL 类。不过,因为 ATL 宿纳控件的方式与 MFC 迥异,所以这是我们要介绍的一个重要主题。我会介绍如何宿纳控件以及接收(sink)事件,并开发一个相比用 MFC 的 ClassWizard 写就的应用毫无功能损失的应用程序。当然,你可以在你写的 WTL 应用中使用 ATL 对控件宿纳的支持。
阅读全文…
|
Internet Explorer Programming, MFC 程序员的 WTL 教程, WTL
ActiveX, IE, Internet Explorer, WTL
关键字:CGID_ShellDocView
1、概述
在本系列五《调用IE隐藏的命令》中我们曾经从MSDN的一篇文章给出的ShowContextMenu范例入手,深入shdoclc.dll找到了藏于其中的浏览器上下文菜单资源,并以SendMessage发送WM_COMMAND消息到”Internet Explorer_Server”窗口以及其父窗口”Shell DocObject View”的方法完美实现了对“添加到收藏夹”对话框,“导入/导出向导”对话框等的调用,《自定义浏览器上下文菜单》和《完美的“编码”菜单》也运用了同样的技术。
这次,我们还是从 ShowContextMenu 范例入手,再次挖掘 IE 隐藏的命令——CGID_ShellDocView 的命令。
阅读全文…
Internet Explorer Programming
CGID_ShellDocView, IE, Internet Explorer, WebBrowser
关键字:焦点,Focus,加速键,Accelerator,OLEIVERB_UIACTIVATE,IHTMLWindow2,IHTMLDocument4
1、概述
对于99%有UI的Windows应用程序来说,键盘操作都是不可或缺而又容易被人们遗忘的一环。如果对Windows组件作一次逐个的测试,我们会发现Microsoft提供的任何一个Windows组件都通过键盘实现完全的控制(“计算器”比较特殊,它是一个按钮很多且每个按钮都不能获得焦点的程序,但在帮助文档中我们仍然可以找到为每个按钮设置的快捷键),这对于一个专业的Windows应用程序或软件来说非常重要。换句话说,就算没有鼠标用户也不应该束手无策,用户应该可以通过键盘操作完成其希望的功能。焦点的转移无疑是键盘操作的一个重要方面,在浏览器编程中尤其如此。
阅读全文…
Internet Explorer Programming
Accelerator, Focus, IE, IHTMLDocument4, IHTMLWindow2, Internet Explorer, OLEIVERB_UIACTIVATE, WebBrowser, 加速键, 焦点
关键字:超级拖放,GetDropTarget,ondragover,IHTMLDataTransfer
1、概述
许多多窗口浏览器都提供了一种被称为“超级拖放”(或“超级拖拽”、“随心拖放”等等,不一而足)的功能。作为对IE拖拽行为对扩展,“超级拖放”实现了一些非常实用的功能:
- 拖放网页链接:通常是在新窗口中打开
- 拖放选中的文字:保存文字、作为关键字通过搜索引擎搜索网络、作为Url打开等
- 拖放图片:通常是保存图片到指定文件夹
- 当然,还有很关键的一点:拖动对象时鼠标指针反馈不同的拖拽效果
在《Internet Explorer 编程简述(十)响应来自HTML Element的事件通知——几个好用的类》中曾提到,尽管许多浏览器都提供了超级拖放的功能,但与 IE 的缺省实现相比,除了具备鼠标指针拖拽效果外,还没有哪个浏览器的实现能够实现:
- 文字在页面内与输入框之间的交互拖放(这一点最为重要)
- 来自外部的文字与网页输入框之间的交互拖放
- 拖拽时滚动页面(这一点是被忽略了)
本文的目的,一是介绍实现超级拖放的两种方法,二是说明如何实现“完美”的拖放——即扩展IE拖拽行为的同时,保留IE默认的拖拽行为。三是给出一个最为直接和简洁的实现,至于拖放不同的对象以实现不同的功能,不在本文讨论的范围,略去。
阅读全文…
Internet Explorer Programming
GetDropTarget, IE, IHTMLDataTransfer, Internet Explorer, ondragover, WebBrowser, 超级拖放
关键字:HTML Element, Sink
1、概述
实现了对 Webbrowser 的 resuing 之后我们便会发现有时候我们还需要处理浏览器中的元素(HTML Element)。这种处理包括主动和被动两个方面,像《FAQ:如何访问WebBrowser的滚动条》、《FAQ:操纵下拉列表》、《FAQ:两种方法访问多层嵌套的frame》等文章所演示的就是主动的处理。通常我们从 Webbrowser 获得一个 Web 文档接口(IHTMLDocumentx),从它出发便可访问到浏览器所包含的一切 HTML 元素。而被动的处理则是在 COM 技术中称为 Sink 的技术,我更喜欢的说法是事件通知。当文档的下载进度发生变化时,我们可以获得 ProgressChange 通知,当 Webbrowser 下载完 HTML 文档时,我们可以获得 DocumentComplete 的通知,而当链接被点击,或图片被拖动时,我们如何获得通知呢?本文希望能够给出部分的答案。
阅读全文…
Internet Explorer Programming
HTML, HTML Element, IE, Internet Explorer, Sink, WebBrowser
关键字:Add To Favorite, Import/Export Wizard, Shell DocObject View, Internet Explorer_Server
1、概述
除了“整理收藏夹”和“添加到收藏夹”对话框外,还有其它一些对话框是我们希望直接通过WebBrowser调用的,比如“导入/导出”对话框,用一般的方法很难调用。IShellUIHelper尽管提供了ImportExportFavorites方法,但结果只是显示一个选择文件的对话框,且只能导入/导出收藏夹而不能对Cookies操作。
阅读全文…
Internet Explorer Programming
Add To Favorite, IE, Import/Export Wizard, Internet Explorer, Internet Explorer_Server, Shell DocObject View, WebBrowser
近期评论