[IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
生活随笔
收集整理的這篇文章主要介紹了
[IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
從IE7 開始, IE 支持多頁面(Tab)瀏覽。 而IE 的WebBrowser 控件也相應(yīng)的多頁面瀏覽開發(fā)接口。 出于向下兼容考慮,該接口在缺省情況下是被屏蔽的。 假設(shè)你用WebBrowser 控件開發(fā)一個瀏覽器 MyTabBrowser, 你會發(fā)現(xiàn)右鍵菜單的"在新標(biāo)簽頁中打開" (Open in New Tab)項是灰色的(如下圖)。 打開這個功能,你需要在注冊表里面創(chuàng)建以自己文件名為值的DWORD值: HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
???? SOFTWARE
????????? Microsoft
?????????????? Internet Explorer
??????????????????? Main
???????????????????????? FeatureControl
????????????????????????????? FEATURE_TABBED_BROWSING
?????????????????????????????????? MyTabBrowser.exe= 0x00000001 多頁面瀏覽開發(fā)接口開啟之后,你的程序MyTabBrowser 就可以和IE一樣響應(yīng)"Open in New Tab”的請求了。 IE 定義了以下3種動作為"Open in New Tab"的請求 1)用戶在右鍵菜單中點擊“Open in New Tab” 項 2)? 用戶用鼠標(biāo)中鍵點擊鏈接 3)用戶按住Ctrl 鍵點擊鏈接 該請求會激發(fā) DWebBrowserEvents2::NewWindow3 事件, 該事件的參數(shù)dwFlags 標(biāo)示了這個請求的類型: 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??
??? {??
?????? .....??
??? }??
?}
???? SOFTWARE
????????? Microsoft
?????????????? Internet Explorer
??????????????????? Main
???????????????????????? FeatureControl
????????????????????????????? FEATURE_TABBED_BROWSING
?????????????????????????????????? MyTabBrowser.exe= 0x00000001 多頁面瀏覽開發(fā)接口開啟之后,你的程序MyTabBrowser 就可以和IE一樣響應(yīng)"Open in New Tab”的請求了。 IE 定義了以下3種動作為"Open in New Tab"的請求 1)用戶在右鍵菜單中點擊“Open in New Tab” 項 2)? 用戶用鼠標(biāo)中鍵點擊鏈接 3)用戶按住Ctrl 鍵點擊鏈接 該請求會激發(fā) DWebBrowserEvents2::NewWindow3 事件, 該事件的參數(shù)dwFlags 標(biāo)示了這個請求的類型: 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??
??? {??
?????? .....??
??? }??
?}
總結(jié)
以上是生活随笔為你收集整理的[IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何绘制类似仓库的平面位置图
- 下一篇: 卸载受密码保护SEP Norton 11