网站已经改版为Wordpress版本,这里是旧版本的快照,请不要在页面中留言.

MFC程序中内嵌网页,附示例工程

    

    最近在课程设计,因为小悠太懒了,是在不想用C++完成一些简单的文件上传下载操作,于是就想着将网页内嵌到程序中,上传下载神马的就直接使用网页Web来完成就好了,本示例中将演示在MFC程序中内嵌一个html网页

 

·    介绍一下原理

首先要显示网页的话我们需要一个浏览器神马的,还好微软给了我们一个Web BrowserActivex,我们只要简单的将这个Activex放到我们的程序中就OK.

·    方法1,通过向导直接创建

小悠这里使用的是VS2010,其他的版本类似.

   我们先新建一个MFC的对话框程序.

   找到我们的对话框的资源,右键à插入Activex控件


 


   在弹出的选项中我们找到 Microsoft Web Browser 点击确认,然后就会生成一个控件,我们在控件上右键à添加变量,为这个控件关联一个变量,例如我的变量是m_Myweb


    有了这个控件的变量,我们就直接设置需要显示的网址就Ok了,找到你的对话框的OnInitDialog添加上     m_Myweb.Navigate(L"http://www.youranshare.com",NULL,NULL,NULL,NULL);

    OK,运行一下试试,看看是不是打开了 悠然品鉴~


·    方法2,通过类向导创建一个CWebBrowser手动Create创建

   首先还是先创建一个MFC对话框的程序

   找到菜单 【项目】à【类向导】,

 

然后在 添加类的选项中选择Activex控件(注意是点击那个按钮的右侧的小三角)

 

然后在弹出的向导中按照图示,选中Microsoft Web Browser,然后导入IWebBrowser2的接口,点击完成.


通过上述的步骤,我们就能生成一个 CWebBrowser2的类了,工程内就会多出CWebBrowser2类的头文件与源文件。

我们有了这个CWebBrowser2类我们就可以通过这个类创建浏览器了;我们在对话框中添加一个CWebBrowser2的变量(别忘了引入头文件)

    例如这里我创建的变量名称是 CWebBrowser2 m_MyWeb2;

在对话框的OnInitDialog函数中添加我们的创建工作.

        //我想全屏显示,所以就计算了客户区域的大小
         CRect rectClient;
         GetClientRect(&rectClient);
         m_MyWeb2.Create(NULL,NULL,WS_VISIBLE|WS_CHILD,rectClient,this,10086);
         //我不想让浏览器弹出警告脚本的错误
         m_MyWeb2.SetSilent(TRUE);//让他沉默吧~
         m_MyWeb2.Navigate(L"www.youranshare.com",NULL,NULL,NULL,NULL);

   运行一下试试吧

·    如果你的SetSilent()函数不能使用?

如果你的SetSilent()函数不能使用的话,那是因为在CWebBrowser2类中没有导入这个接口,我们直接手动在CWebBrowser2头文件中添加这个函数就OK了:

CWebBrowser2: SetSilent原型.

void CWebBrowser2::SetSilent(BOOL bNewValue)
{
   static BYTE parms[] =VTS_BOOL;
   InvokeHelper(0x227, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
                    bNewValue);
}

 

·    两种方法的示例代码下载:

解压密码  yscode

百度网盘下载地址:http://pan.baidu.com/s/1bnvlqdp


   本文内容以及代码示例出自悠然品鉴原创,未经许可请勿转载!

  • 标签:
  • MFC内嵌网页
  • CWebBrowser2
网站已经改版为Wordpress版本,这里是旧版本的快照,请不要在页面中留言.