弹出新网页在新的对话框中打开

首先用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()函数

 现在可以试验下,在新窗口打开,显示在自己的对话框里,对话框可能有点小,

要想全屏的话,重载CNewDlg对话框类的OnInitDialog()函数,具体做法:

六,重载OnInitDialog()函数

   在类窗口里选择"CNewDlg",进入[属性],点击[重写],  (位于[事件]、[消息]图标之后,还记得闪电图标吗?在那之后第二个...)

   点击OnInitDialog,添加OnInitDialog函数即可,系统会自动生成代码,再在代码中添加最大化设置...

   现在还有个问题,在新的窗口里又弹出新的窗口怎么办...???

     可以试下在百度里搜索百度网址,进入打开,这时在新对话框窗口弹出百度页主页,

    接着搜百度主页,进入打开,这时又在IE窗口打开,失去控制了,。。。

    不要慌,在窗口里生成新窗口就行了...也是添加NewWindow3消息处理,步骤如下:

七,给新对话框CNewDlg的webbrowser控件添加NewWindow3消息处理

    进入资源窗口,这次是新对话框IDD_DIALOG_NEW,再至webbrowser控件(IDC_EXPLORER_NEW)属性窗口,

  点击控件事件(闪电状图标),找到NewWindow3,点击后右边有添加NewWindow3ExplorerNew,代码会自动生成

 再NewWindow3ExplorerNew里添加代码,其实和第五步的NewWindow3Explorer1()一样...

 

现在就可以从前有座山,山里有个庙,庙里...一直下去了,,,有兴趣可以试试...

可以缩小窗口看下诸多排列窗口的效果...

至此结束...

八,还有个非常严重的问题,内存泄漏...

C++里就很清楚,new的就得delete...

当然如果你能直接delete pNewDlg,那最好不过,实际中pNewDlg已消失无踪了...

我们重载CNewDlg对话框的OnCancel(),OnOK() 和WM_NCDESTROY消息事件

 

九,打开网页,关闭网页后还是会发现内存增得多,减的少

这个微软的IE内核就是烂,你用IE打开网页,在任务管理器里查看内存,也是增得多,减的少,

google浏览器chrome也好不到哪去...

据说opera控制的是最好的(我没试过)

若想用代码控制这些,可参看http://support.microsoft.com/kb/262110/zh-cn

是VB写的,我VB忘得差不多了,有空再去转换为VC!

也难怪是Visual Basic写的,比尔盖茨当年豪气冲天,说:"我敢以BASIC挑战任何人,也欢迎任何人以BASIC来挑战我!"

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值