1. 程式人生 > >在MFC對話方塊中顯示網頁

在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

   設定視窗最大化和控制元件位置

  1. void CbrowserDlg::OnBnClickedButtonBaidu()  
  2. {  
  3.     // TODO: 在此新增控制元件通知處理程式程式碼
  4.     ShowWindow(SW_SHOWMAXIMIZED);   // 視窗最大化
  5.     CRect rect;     
  6.     GetClientRect(&rect);  
  7.     // 設定WebBrowser控制元件位置
  8.     m_webBrowser.MoveWindow(100, 0, rect.Width() - 100, rect.Height());   
  9.     // 導航至百度
  10.     VARIANT vInfo;  
  11.     m_webBrowser.Navigate("www.baidu.com", &vInfo, &vInfo, &vInfo, &vInfo);  
  12. }  
 

2.如果你試一下www.baidu.com.sb,你會發現會彈出指令碼錯誤對話方塊!

   去資源視窗設定webbrowser控制元件的Silent屬性為True.

   還有可能會彈出除錯對話方塊,這得在IE瀏覽器屬性裡設定:

   開啟IE--->[工具]--->[Internet選項]--->[高階]--->[瀏覽]

   勾上[禁用指令碼除錯(Internet Explorer)] [禁用指令碼除錯(其他)]即可

3.彈出新的網頁,怎麼又用IE開啟呢?

   要想不用IE開啟,在程式窗口裡顯示,得響應NewWindow3事件

進入資源視窗,再至webbrowser控制元件屬性視窗,點選控制元件事件(閃電狀圖示)

找到NewWindow3,點選後右邊有新增NewWindow3Explorer1,程式碼會自動生成

再在程式碼裡新增導航的新URL

  1. void CbrowserDlg::NewWindow3Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel, unsigned long dwFlags, LPCTSTR bstrUrlContext, LPCTSTR bstrUrl)  
  2. {  
  3.     // TODO: 在此處新增訊息處理程式程式碼
  4.     * Cancel = TRUE;  
  5.     CString strUrl;  
  6.     strUrl = bstrUrl;  
  7.     VARIANT vInfo;  
  8.     m_webBrowser.Navigate(strUrl, &vInfo, &vInfo, &vInfo, &vInfo);  
  9. }  

如在新視窗中開啟連結和在新標籤中開啟連結是兩個不同的事件(NewWindow2,NewWindow3)