[IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口 推荐
2009-04-23 07:41
429 查看
从IE7 开始, IE 支持多页面(Tab)浏览。 而IE 的WebBrowser 控件也相应的多页面浏览开发接口。 出于向下兼容考虑,该接口在缺省情况下是被屏蔽的。 假设你用WebBrowser 控件开发一个浏览器 MyTabBrowser, 你会发现右键菜单的"在新标签页中打开" (Open in New Tab)项是灰色的(如下图)。
打开这个功能,你需要在注册表里面创建以自己文件名为值的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 中打开链接.
以下是简单的代码示例如何处理该事件:
view plaincopy to clipboardprint?
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
{
.....
}
}
打开这个功能,你需要在注册表里面创建以自己文件名为值的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 中打开链接.
以下是简单的代码示例如何处理该事件:
view plaincopy to clipboardprint?
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
{
.....
}
}
相关文章推荐
- [IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
- [IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
- WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
- WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
- [IE编程] WebBrowser控件中设置页面的缩放 推荐
- [IE编程] WebBrowser控件中设置页面的缩放
- [IE编程] WebBrowser控件中设置页面的缩放
- [IE编程] WebBrowser控件中设置页面的缩放
- webBrowser控件屏蔽页面在IE中打开
- [转:IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式
- C# 开发中WebBrowser控件调整IE兼容性的方法
- [IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式
- 江左盟[Winform]winform使用WebBrowser知道IE的版本浏览页面
- 使用SpingMVC开发rest接口,返回json到页面时,IE提示下载json对话框
- 使用w使使用webbrowser控件,浏览页面时,点右键查看属性时程序死掉
- JavaWeb开发,使用WebBrowser控件调用打印机打印页面
- C#中的WebBrowser控件,如何做到点击页面中的链接保持在应用程序内打开而不是用IE打开
- [IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式
- [IE编程] IE8 新增的C++开发接口
- 使用w使使用webbrowser控件,浏览页面时,点右键查看属性时程序死掉