定制浏览器
2006-07-22 22:02:45 来源:WEB开发网核心提示:浏览器控件是个典型的Active控件,提供了大量的接口及自动化对象,定制浏览器,可以灵活的加以控制,需要的时候,使用MFC建立接口方案提供一个DIID_DWebBrowserEvents2接口对象嵌套成员,class CFMDBrowser : public CWebBrowser{...//事件接收器接口//DWeb
浏览器控件是个典型的Active控件,提供了大量的接口及自动化对象,可以灵活的加以控制,需要的时候,可以通过这些接口控制浏览器的行为,或提供相应的出接口定制浏览器。
一、概述
浏览器对象CLSID:
CLSID_WebBrowser
提供的主要接口
IWebBrowser2 浏览器的接口
当文档建立后,可以得到相应的文档接口,文档中各标记元素的接口。
在DHTML中,大量的对象和事件就是又这些接口提供和管理的。
IHTMLDocument2
IHTMLWindow2
IHTMLEventObj
IHTMLElement
....
浏览器还将调用宿主提供的接口,以发出事件或给用户提供定制机会。
出接口
DIID_DWebBrowserEvents2
DIID_HTMLDocumentEvents
DIID_HTMLWindowEvents
(ICustomDoc)
IDocHostUIHandler
二、事件的相应
除了使用MFC缺省的事件响应机制外,也可以自建事件接受器,来响应事件
也就是,在封装对象中提供DIID_DWebBrowserEvents2 接口,然后将此接口作为接受器连接到浏览器对象。
一种做法是
在派生类中,使用MFC建立接口方案提供一个DIID_DWebBrowserEvents2接口对象嵌套成员。
class CFMDBrowser : public CWebBrowser
{
...
//事件接收器接口
//DWebBrowserEvents
//这是一个IDispatch分发接口
BEGIN_INTERFACE_PART(BrowserEventSink,DWebBrowserEvents)
STDMETHOD(GetTypeInfoCount)(UINT *pctinfo);
STDMETHOD(GetTypeInfo)(UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
STDMETHOD(GetIDsOfNames)(REFIID riid,
LPOLESTR *rgszNames,UINT cNames,
LCID lcid,DISPID *rgDispId);
STDMETHOD(Invoke)(DISPID dispIdMember,REFIID riid,LCID lcid,
WORD wFlags,DISPPARAMS *pDispParams,
VARIANT *pVarResult,EXCEPINFO *pExcepInfo,
UINT *puArgErr);
END_INTERFACE_PART(BrowserEventSink)
DWORD m_dwEventSinkCookie;
...
}
这是一个接收器接口,无需添入到对象的接口表中。
- ››浏览器Cookie:一半广告 一半隐私
- ››浏览器Skyfire将推出iPad版,支持Flash
- ››浏览器中的内存泄露(重新整理ing)
- ››浏览器已经去过多少个网站
- ››定制个性化的对话框窗口类
- ››定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP ...
- ››定制基于 Visual studio 2005 平台 Windows CE(AR...
- ››定制版黑雨 blackra1n 越狱3.1.2 全系 iPhone
- ››定制 Eclipse RCP 应用程序,第 1 部分: 可与 SWT...
- ››浏览器资源占用高另有他因
- ››浏览器更新驱动 驱动精灵在线版登场
- ››定制AIX操作系统的shell环境
更多精彩
赞助商链接