WEB开发网
开发学院软件开发VC 定制浏览器 阅读

定制浏览器

 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;
  ...
}

这是一个接收器接口,无需添入到对象的接口表中。

1 2 3  下一页

Tags:定制 浏览器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接