弹出新网页在新的对话框中打开
2012-06-05 16:10
148 查看
先用VS2008新建基于对话框的MFC应用程序,添加webbrowser控件,Navigate导航!
具体看上篇blog
http://blog.csdn.net/LightBoat09/archive/2010/12/14/6074967.aspx
本篇的工程是在上篇的工程项目进行添加...
一,新建对话框
ID 为 IDD_DIALOG_NEW
对话框的Minimize Box属性设为True,
Maximize Box属性也设为True,
二,添加webbrower控件
资源对话框上右击选择[插入ActiveX控件],选择[Microsoft Web Browser],点击"确认",
设置ID为IDC_EXPLORER_NEW
三,添加对话框类
资源对话框上右击--->[添加类],弹出“MFC 类向导"
输入类名:CNewDlg,
基类默认是CDialog,
点击"完成"
四,添加webbrowser控件型变量
在类窗口里选择"CNewDlg",选中右击--->[添加]--->[添加变量],弹出“添加成员变量向导”对话框
选择"控件变量"(check BOX框),控件ID选择IDC_EXPLORER_NEW,变量名输入m_newwebBrowser,点击“完成”!
五,现在要做的是弹出新网页窗口时显示在自己建的对话框里
那改写以前(上篇blog)的NewWindow3Explorer1()函数
[cpp]
view plaincopyprint?
void CbrowserDlg::NewWindow3Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel, unsigned long dwFlags, LPCTSTR bstrUrlContext, LPCTSTR bstrUrl)
{
// TODO: 在此处添加消息处理程序代码
* Cancel = TRUE;
CString strUrl;
strUrl = bstrUrl;
// 新建对话框
CNewDlg *pNewDlg = new CNewDlg;
pNewDlg->Create(IDD_DIALOG_NEW, this);
pNewDlg->ShowWindow(SW_SHOW);
// 网页导航,新的对话框中的webbrowser控件!
VARIANT vInfo;
VariantInit(&vInfo);
pNewDlg->m_newwebBrowser.Navigate(strUrl, &vInfo, &vInfo, &vInfo, &vInfo);
}
现在还有个问题,在新的窗口里又弹出新的窗口怎么办...???
可以试下在百度里搜索百度网址,进入打开,这时在新对话框窗口弹出百度页主页,
接着搜百度主页,进入打开,这时又在IE窗口打开,失去控制了,。。。
不要慌,在窗口里生成新窗口就行了...也是添加NewWindow3消息处理,步骤如下:
七,给新对话框CNewDlg的webbrowser控件添加NewWindow3消息处理
进入资源窗口,这次是新对话框IDD_DIALOG_NEW,再至webbrowser控件(IDC_EXPLORER_NEW)属性窗口,
点击控件事件(闪电状图标),找到NewWindow3,点击后右边有添加NewWindow3ExplorerNew,代码会自动生成
再NewWindow3ExplorerNew里添加代码,其实和第五步的NewWindow3Explorer1()一样...
[cpp]
view plaincopyprint?
void CNewDlg::NewWindow3ExplorerNew(LPDISPATCH* ppDisp, BOOL* Cancel, unsigned long dwFlags, LPCTSTR bstrUrlContext, LPCTSTR bstrUrl)
{
// TODO: 在此处添加消息处理程序代码
* Cancel = TRUE;
CString strUrl;
strUrl = bstrUrl;
// 新建对话框
CNewDlg *pNewDlg = new CNewDlg;
pNewDlg->Create(IDD_DIALOG_NEW, this);
pNewDlg->ShowWindow(SW_SHOW);
// 网页导航,新的对话框中的webbrowser控件!
VARIANT vInfo;
VariantInit(&vInfo);
pNewDlg->m_newwebBrowser.Navigate(strUrl, &vInfo, &vInfo, &vInfo, &vInfo);
}
九,打开网页,关闭网页后还是会发现内存增得多,减的少
这个微软的IE内核就是烂,你用IE打开网页,在任务管理器里查看内存,也是增得多,减的少,
google浏览器chrome也好不到哪去...
据说opera控制的是最好的(我没试过)
若想用代码控制这些,可参看http://support.microsoft.com/kb/262110/zh-cn
是VB写的,我VB忘得差不多了,有空再去转换为VC!
也难怪是Visual Basic写的,比尔盖茨当年豪气冲天,说:"我敢以BASIC挑战任何人,也欢迎任何人以BASIC来挑战我!"
具体看上篇blog
http://blog.csdn.net/LightBoat09/archive/2010/12/14/6074967.aspx
本篇的工程是在上篇的工程项目进行添加...
一,新建对话框
ID 为 IDD_DIALOG_NEW
对话框的Minimize Box属性设为True,
Maximize Box属性也设为True,
二,添加webbrower控件
资源对话框上右击选择[插入ActiveX控件],选择[Microsoft Web Browser],点击"确认",
设置ID为IDC_EXPLORER_NEW
三,添加对话框类
资源对话框上右击--->[添加类],弹出“MFC 类向导"
输入类名:CNewDlg,
基类默认是CDialog,
点击"完成"
四,添加webbrowser控件型变量
在类窗口里选择"CNewDlg",选中右击--->[添加]--->[添加变量],弹出“添加成员变量向导”对话框
选择"控件变量"(check BOX框),控件ID选择IDC_EXPLORER_NEW,变量名输入m_newwebBrowser,点击“完成”!
五,现在要做的是弹出新网页窗口时显示在自己建的对话框里
那改写以前(上篇blog)的NewWindow3Explorer1()函数
[cpp]
view plaincopyprint?
void CbrowserDlg::NewWindow3Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel, unsigned long dwFlags, LPCTSTR bstrUrlContext, LPCTSTR bstrUrl)
{
// TODO: 在此处添加消息处理程序代码
* Cancel = TRUE;
CString strUrl;
strUrl = bstrUrl;
// 新建对话框
CNewDlg *pNewDlg = new CNewDlg;
pNewDlg->Create(IDD_DIALOG_NEW, this);
pNewDlg->ShowWindow(SW_SHOW);
// 网页导航,新的对话框中的webbrowser控件!
VARIANT vInfo;
VariantInit(&vInfo);
pNewDlg->m_newwebBrowser.Navigate(strUrl, &vInfo, &vInfo, &vInfo, &vInfo);
}
[cpp] view plaincopyprint? BOOL CNewDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 ShowWindow(SW_SHOWMAXIMIZED); //窗口最大化 CRect rect; GetClientRect(&rect); // 设置WebBrowser控件位置 m_newwebBrowser.MoveWindow(0, 0, rect.Width(), rect.Height()); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } BOOL CNewDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 ShowWindow(SW_SHOWMAXIMIZED); //窗口最大化 CRect rect; GetClientRect(&rect); // 设置WebBrowser控件位置 m_newwebBrowser.MoveWindow(0, 0, rect.Width(), rect.Height()); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE }
现在还有个问题,在新的窗口里又弹出新的窗口怎么办...???
可以试下在百度里搜索百度网址,进入打开,这时在新对话框窗口弹出百度页主页,
接着搜百度主页,进入打开,这时又在IE窗口打开,失去控制了,。。。
不要慌,在窗口里生成新窗口就行了...也是添加NewWindow3消息处理,步骤如下:
七,给新对话框CNewDlg的webbrowser控件添加NewWindow3消息处理
进入资源窗口,这次是新对话框IDD_DIALOG_NEW,再至webbrowser控件(IDC_EXPLORER_NEW)属性窗口,
点击控件事件(闪电状图标),找到NewWindow3,点击后右边有添加NewWindow3ExplorerNew,代码会自动生成
再NewWindow3ExplorerNew里添加代码,其实和第五步的NewWindow3Explorer1()一样...
[cpp]
view plaincopyprint?
void CNewDlg::NewWindow3ExplorerNew(LPDISPATCH* ppDisp, BOOL* Cancel, unsigned long dwFlags, LPCTSTR bstrUrlContext, LPCTSTR bstrUrl)
{
// TODO: 在此处添加消息处理程序代码
* Cancel = TRUE;
CString strUrl;
strUrl = bstrUrl;
// 新建对话框
CNewDlg *pNewDlg = new CNewDlg;
pNewDlg->Create(IDD_DIALOG_NEW, this);
pNewDlg->ShowWindow(SW_SHOW);
// 网页导航,新的对话框中的webbrowser控件!
VARIANT vInfo;
VariantInit(&vInfo);
pNewDlg->m_newwebBrowser.Navigate(strUrl, &vInfo, &vInfo, &vInfo, &vInfo);
}
[cpp] view plaincopyprint? void CNewDlg::OnCancel() { // TODO: 在此添加专用代码和/或调用基类 //CDialog::OnCancel(); DestroyWindow(); } void CNewDlg::OnOK() { // TODO: 在此添加专用代码和/或调用基类 //CDialog::OnOK(); DestroyWindow(); } void CNewDlg::OnNcDestroy() { CDialog::OnNcDestroy(); // TODO: 在此处添加消息处理程序代码 delete this; } void CNewDlg::OnCancel() { // TODO: 在此添加专用代码和/或调用基类 //CDialog::OnCancel(); DestroyWindow(); } void CNewDlg::OnOK() { // TODO: 在此添加专用代码和/或调用基类 //CDialog::OnOK(); DestroyWindow(); } void CNewDlg::OnNcDestroy() { CDialog::OnNcDestroy(); // TODO: 在此处添加消息处理程序代码 delete this; }
九,打开网页,关闭网页后还是会发现内存增得多,减的少
这个微软的IE内核就是烂,你用IE打开网页,在任务管理器里查看内存,也是增得多,减的少,
google浏览器chrome也好不到哪去...
据说opera控制的是最好的(我没试过)
若想用代码控制这些,可参看http://support.microsoft.com/kb/262110/zh-cn
是VB写的,我VB忘得差不多了,有空再去转换为VC!
也难怪是Visual Basic写的,比尔盖茨当年豪气冲天,说:"我敢以BASIC挑战任何人,也欢迎任何人以BASIC来挑战我!"
相关文章推荐
- IE浏览器打开任何网页都弹出保存对话框的的原因及解决方式
- 打开网页直接弹出QQ对话框
- 打开网页自动弹出QQ对话框的3种方法
- 关于无法显示该网页,弹出对话框显示"Internet Explorer无法打开Internet站点xxx,已终止操作"问题的解决方法
- 如何实现打开网页自动弹出QQ对话框
- 让网页附件为Word或Excel的文件,下载时直接弹出下载对话框,而不打开它
- 弹出新网页在新的对话框中打开
- 打开网页自动弹出QQ对话框的实现办法
- express 4.x 打开网页时弹出登录对话框
- 打开添加设备对话框时弹出对话框报错
- EXCEL嵌入webbrowser 弹出一个对话框询问是下载还是打开
- 网页关闭时弹出确认取消对话框
- 基于对话框的应用程序,点击button打开一个网页
- 打开网页自动弹出QQ临时会话 (打开网站弹出QQ聊天) qq.js文件代
- 刷新页面时,IE弹出“要再次显示该网页....”对话框,解决办法
- Flex Builder 3 如何弹出“打开文件对话框”,限制选择文件类型
- 打开网页,IE7为什么老是弹出“是否允许下载文件”
- 使用 Web Browser 控件的 newWindow2 事件打开弹出的网页。
- MFC C++弹出对话框打开txt文件(例子)
- JavaScript-1.最简单的程序之网页弹出对话框,显示为Warning---ShinePans