定制 WebBrowser 控件

 定制 WebBrowser 控件 //或者说 控件与接口的关联;

因为工作需要,这几天在寻找定制WebBrowser控件的方法。原来已经研究过一阵子,原理大概知道,
  基本就是实现IDocHostUIHandler和IDocHostShowUI两个接口,IE控件会在适当的时候调用这两个接口,
  我只要按照帮助文档的说明设置不同的值就可以了。

  挂接这两个接口接口到控件中去,有两种方法:
  一种是通过ICustomDoc接口定制,代码如下:




html0.Navigate2("about:blank");
ICustomDoco=html0.DocumentasICustomDoc;
o.SetUIHandler(thisasIDocHostUIHandler);

  但是因为只有文档装入之后才可以取得Document的值,所以需要预先装入一个空文档,这里是about:blank。

  第二种方法是完成ActiveDocumentHost所需要的所有接口


 

,IOleClientSite
,IOleInPlaceSite
,IOleDocumentSite
//,IOleWindow //IOleInPlaceSite已经包含了该接口
,IDocHostUIHandler
,IDocHostShowUI

//IOleInPlaceSite.GetWindowContext调用需要以下两个接口
,IOleInPlaceFrame
//,IOleInPlaceUIWindow//IOleInPlaceFrame已经实现了该接口

//接口IOleClientSite.GetContainor需要用到
,IOleContainer


  挂接这些接口到控件中的代码如下:

  

IOleObjecto=html0.GetOcx()asIOleObject;
o.SetClientSite(thisasIOleClientSite);



  一旦挂接成功之后,一般会调用如下几个函数


IOleInPlaceSiteGetWindow
IDocHostUIHandlerGetHostInfo
IDocHostUIHandlerGetOptionKeyPath
IDocHostUIHandlerGetHostInfo
IDocHostUIHandlerGetDropTarget
IDocHostUIHandlerUpdateUI
IDocHostUIHandlerShowUI
IDocHostUIHandlerHideUI
IDocHostUIHandlerTranslateAccelerator
IDocHostUIHandlerTranslateUrl
IDocHostUIHandlerShowContextMenu
IDocHostShowUIIDocHostShowUI
IOleClientSiteGetContainer


  另外还有一种方法,就是直接使用文档嵌入功能,嵌入HTMLDocument对象,这样可以省却使用WebBrowser控件。HtmlEditor就是用的这种方法,可惜我没能做成。

// 除以上原文外,其实还有一种方法就是,自定义类,继承基类和接口;

百度搜索 webbrowser设置IDocHostUIHandler 会找到相关文章;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值