用到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)