注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

写着玩

Bob

 
 
 

日志

 
 
 
 

[IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口   

2010-04-21 23:36:59|  分类: IE编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

从IE7 开始, IE 支持多页面(Tab)浏览。 而IE 的WebBrowser 控件也相应的多页面浏览开发接口。 出于向下兼容考虑,该接口在缺省情况下是被屏蔽的。 假设你用WebBrowser 控件开发一个浏览器 MyTabBrowser, 你会发现右键菜单的"在新标签页中打开" (Open in New Tab)项是灰色的(如下图)。

IE内核 开发 多页面浏览器

打开这个功能,你需要在注册表里面创建以自己文件名为值的DWORD值:

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
     SOFTWARE
          Microsoft
               Internet Explorer
                    Main
                         FeatureControl
                              FEATURE_TABBED_BROWSING
                                   MyTabBrowser.exe= 0x00000001

多页面浏览开发接口开启之后,你的程序MyTabBrowser 就可以和IE一样响应"Open in New Tab”的请求了。 IE 定义了以下3种动作为"Open in New Tab"的请求

1)用户在右键菜单中点击“Open in New Tab” 项

2)  用户用鼠标中键点击链接

3)用户按住Ctrl 键点击链接

该请求会激发 DWebBrowserEvents2::NewWindow3 事件, 该事件的参数dwFlags 标示了这个请求的类型:

  • NWMF_FORCEWINDOW: 在新窗口中打开链接.
  • NWMF_FORCETAB: 在新Tab 中打开链接.
  • 以下是简单的代码示例如何处理该事件:

        void __stdcall OnEventNewWindow3(IDispatch **ppDisp, VARIANT_BOOL *Cancel, DWORD dwFlags, BSTR bstrUrlContext, BSTR bstrUrl)

        {

            if (dwFlags & NWMF_FORCETAB) // Open in a new Tab

            {

                CComPtr<IWebBrowser2> spBrowser = OpenNewTab(); // Create a new tab and return the IWebBrowser2 pointer

                if (spBrowser)

                {

                    HRESULT hr = spBrowser->QueryInterface(IID_IDispatch, (void**)ppDisp);

                    *Cancel = SUCCEEDED(hr) ? VARIANT_FALSE : VARIANT_TRUE;

                }

            }

            else if (dwFlags & NWMF_FORCEWINDOW) // Open in a new Window

            {

               .....

            }

         }

    >> 原创文章的版权属于作者,转载请注明出处和作者信息(http://blog.csdn.net/WinGeek/), 谢谢。 <<

      评论这张
     
    阅读(749)| 评论(0)
    推荐 转载

    历史上的今天

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2017