在MFC對話方塊中顯示網頁
用到ActiveX 控制元件,向對話方塊裡面插入一個 WebBrowser控制元件,之後使用就可以了!
利用WebBrowser控制元件建立自己的瀏覽器
①新建一個基於對話方塊的工程,命名為test,然後在對話方塊上單擊右鍵,選擇
Insert ActiveX Control…在彈出的對話方塊中選擇MicroSoft Web瀏覽器,點選OK。
此時對話方塊上已經出現了WebBrowser控制元件,調整它的大小以適合對話方塊的大小。
②選擇WebBrowser控制元件,點選View/ClassWizard,選擇Member Variables,單擊
Add Variable按鈕,此時會彈出兩個對話方塊,均點選確定即可。然後給該控制元件加
入一個變數,我們把它命名為m_ctrlWeb。
③在ClassWizard中選擇OnInitDialog()函式,在裡面加入如下程式碼:
m_ctrlWeb.Navigate("http://www.baidu.com", NULL, NULL, NULL, NULL);
第一個引數即你要瀏覽的URL地址,可以是一個檔案,也可以是一個地址
(如:http://www.baidu.com)
1.視窗大小,位置?
進入資源視窗,設定對話方塊Minimine Box屬性 為True
設定視窗最大化和控制元件位置
- void CbrowserDlg::OnBnClickedButtonBaidu()
- {
- // TODO: 在此新增控制元件通知處理程式程式碼
- ShowWindow(SW_SHOWMAXIMIZED); // 視窗最大化
- CRect rect;
- GetClientRect(&rect);
- // 設定WebBrowser控制元件位置
-
m_webBrowser.MoveWindow(100, 0, rect.Width() - 100, rect.Height());
- // 導航至百度
- VARIANT vInfo;
- m_webBrowser.Navigate("www.baidu.com", &vInfo, &vInfo, &vInfo, &vInfo);
- }
2.如果你試一下www.baidu.com.sb,你會發現會彈出指令碼錯誤對話方塊!
去資源視窗設定webbrowser控制元件的Silent屬性為True.
還有可能會彈出除錯對話方塊,這得在IE瀏覽器屬性裡設定:
開啟IE--->[工具]--->[Internet選項]--->[高階]--->[瀏覽]
勾上[禁用指令碼除錯(Internet Explorer)] [禁用指令碼除錯(其他)]即可
3.彈出新的網頁,怎麼又用IE開啟呢?
要想不用IE開啟,在程式窗口裡顯示,得響應NewWindow3事件
進入資源視窗,再至webbrowser控制元件屬性視窗,點選控制元件事件(閃電狀圖示)
找到NewWindow3,點選後右邊有新增NewWindow3Explorer1,程式碼會自動生成
再在程式碼裡新增導航的新URL
- void CbrowserDlg::NewWindow3Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel, unsigned long dwFlags, LPCTSTR bstrUrlContext, LPCTSTR bstrUrl)
- {
- // TODO: 在此處新增訊息處理程式程式碼
- * Cancel = TRUE;
- CString strUrl;
- strUrl = bstrUrl;
- VARIANT vInfo;
- m_webBrowser.Navigate(strUrl, &vInfo, &vInfo, &vInfo, &vInfo);
- }
如在新視窗中開啟連結和在新標籤中開啟連結是兩個不同的事件(NewWindow2,NewWindow3)