27 四月, 2007
WB, MFC: 如何改变Web Browser Control的UI
改动IE的Web Browser控件UI,包括自定义或者禁止右键菜单,禁止控件border的3D特性,如何处理鼠标双击事件等等。
通过实现IDocHostUIHandler接口实现。
- 禁止或者自定义菜单:IDocHostUIHandler::ShowContextMenu
- 去除控件border的3D属性:IDocHostUIHandler::GetHostInfo,设置flag为DOCHOSTUIFLAG_NO3DBORDER
- 去除控件窗口的滚动条:IDocHostUIHandler::GetHostInfo,设置flag为DOCHOSTUIFLAG_SCROLL_NO
在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方法也会被屏蔽。
一个简单的例子:Disabling TCppWebBrowser's context menu or "right-click" menu. - by Borland Developer Support Staff
最新回复
发表评论



