27 四月, 2007

WB, MFC: 如何改变Web Browser Control的UI

改动IE的Web Browser控件UI,包括自定义或者禁止右键菜单,禁止控件border的3D特性,如何处理鼠标双击事件等等。

通过实现IDocHostUIHandler接口实现。

在IDocHostUIHandler设置前的文档窗口属性(可以被GetHostInfo改变的那部分)不会变化。所以,如果是在DWebBrowserEvents2::DocumentComplete事件内通过ICustomDoc接口设置IDocHostUIHandler的,那么当前窗口的Border和Scroll等属性的设置需要等待下一次Navigation完毕才能生效。有效期一直维持到控件释放或者下一次显式设置。

trick: 在控件显示前,Navigate "about:blank"页面,同时设置IDocHostUIHandler

至于通过重载PreTranslateMessage的方法实现禁止右键菜单的方法(参考:IE的WebBrowser control是一个窗口类,disable right mouse click -context menu-, accelerator keys),限制太多,特别是当此控件被Hosting两次后,连PreTranslateMessage方法也会被屏蔽。

参考:WebBrowser Customization

一个简单的例子:Disabling TCppWebBrowser's context menu or "right-click" menu. - by Borland Developer Support Staff


最新回复
发表评论


















Bold Italic Link