CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

100送上求如何动态生成IWebBrowser

楼主nystroM(nys)2005-01-19 11:37:36 在 VC/MFC / 基础类 提问

目的:   点一个按钮后,生成一个WebBrowser的对象,并且让他在dialog里显示出来。  
   
  我找了几种办法,都无法实现。。。。请大家帮忙!!!!  
   
  对话框上已有一个webbrowser的控件,IDC_EXPLORER1  
   
  方法1:  
  CWebBrowser2   *   pbrowser   =   new   CWebBrowser2;  
  pBrowser->Create("",WS_VISIBLE,CRect(0,0,20,20),NULL,IDC_EXPLORER1,0,0,0);  
  //   Create时就出错了,怎么也Create不起来,我怀疑是第4个参数(pParentWnd),我取得了这个dialog的pointer,传进去还是出错。错误是Debug   Assertion   Failed,file:occcont.cpp,58行。  
  pBrowser->Navigate...  
   
  方法2:  
        CoInitialize(NULL);  
   
        CComPtr<IWebBrowser2>   m_spOleObjectPreloadBrowser;  
   
   
        HRESULT   hr   =   CoCreateInstance(CLSID_WebBrowser,   NULL,   CLSCTX_INPROC,  
  IID_IWebBrowser2,   (void   **)&m_spOleObjectPreloadBrowser);  
   
  if   (FAILED(hr)){  
            TRACE(_T("Can   not   create   WebBrowser\r\n"));  
          return   FALSE;  
            }  
   
          CComQIPtr<IWebBrowser2,&IID_IWebBrowser2>   pWebBrowser(m_spOleObjectPreloadBrowser);  
          if(pWebBrowser){  
          CComBSTR   bstrURL   =   _T("www.sina.com.cn");  
          COleSafeArray   vPostData;  
          pWebBrowser->Navigate(bstrURL,  
          COleVariant((long)   0,   VT_I4),  
          COleVariant(_T(""),   VT_BSTR),  
          vPostData,  
          COleVariant(_T(""),   VT_BSTR));  
   
  }  
   
  这样一直到navigate都不出错。。。可是显示不出东西啊。。。网络也显示没有任何下载,关键就是如何让WebBrowser对象和界面关联起来,显示出来!!!! 问题点数:100、回复次数:9Top

1 楼nystroM(nys)回复于 2005-01-19 11:39:17 得分 0

顶一下Top

2 楼nystroM(nys)回复于 2005-01-19 12:10:34 得分 0

大家帮忙啊Top

3 楼qrlvls( 空 气 )回复于 2005-01-19 12:50:46 得分 10

CreateControl  
  Top

4 楼dandycheung(珠穆朗玛)回复于 2005-01-19 22:31:18 得分 10

你的方法一就正确啊,我调用以下代码成功:  
  CWebBrowser2*   pWB2   =   new   CWebBrowser2;  
  pWB2->Create(NULL,   WS_CHILD   |   WS_VISIBLE,   CRect(0,   0,   800,   400),   this,   99);  
  Top

5 楼fanqing(火影忍者+28%(准备学习进程/线程))回复于 2005-01-20 09:54:19 得分 0

学习  
  Top

6 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-01-20 10:09:47 得分 10

注意create了,需要释放Top

7 楼modena(非云)回复于 2005-01-20 10:38:22 得分 20

方法一有问题,  
  1.作为一个窗口,窗口的指针必须是全局或者成员变量,否则该窗口指针将在函数体结束时失效  
  2.你的Dialog上已经有一个控件,那么就已经有一个控件窗口,你调用Create时,将在使用相同的控件ID去创建一个新的窗口,如果MFC让你成功,那么原来控件对应的窗口将形成失效的指针而造成内存泄漏Top

8 楼modena(非云)回复于 2005-01-20 10:44:26 得分 30

第二种方法,呵呵,建议写成这样(测试通过的):  
  //   Error   checking   omitted   for   clarity  
  CComPtr<IOleObject>   spOleObj;  
   
  //   Create   WebBrowser--store   pointer   in   class   member   variable   m_spWebBrowser  
  CoCreateInstance(CLSID_WebBrowser,   NULL,   CLSCTX_INPROC,   IID_IWebBrowser2,   (void**)&m_spWebBrowser);  
   
  //   Query   WebBrowser   for   IOleObject   pointer  
  m_spWebBrowser->QueryInterface(IID_IOleObject,   (void**)&spOleObj);  
   
  //   Set   client   site  
  spOleObj->SetClientSite(this);  
   
  //   In-place   activate   the   WebBrowser   control  
  RECT   rcClient  
  GetClientRect(&rcClient);  
  spOleObj->DoVerb(OLEIVERB_INPLACEACTIVATE,   NULL,   this,   0,   GetTopLevelWindow(),   &rcClient);  
   
  //   Register   container   to   intercept   WebBrowser   events  
  AtlAdvise(m_spWebBrowser,   GetUnknown(),   DIID_DWebBrowserEvents2,   &m_dwCookie);  
   
  //   Navigate   to   start   page  
  m_spWebBrowser->Navigate(L"res://webhost.exe/startpage.htm",   NULL,   NULL,   NULL,   NULL);  
   
  Top

9 楼dandycheung(珠穆朗玛)回复于 2005-01-20 11:29:34 得分 20

1.作为一个窗口,窗口的指针必须是全局或者成员变量,否则该窗口指针将在函数体结束时失效  
  >>   这是对的  
  2.你的Dialog上已经有一个控件,那么就已经有一个控件窗口,你调用Create时,将在使用相同的控件ID去创建一个新的窗口,如果MFC让你成功,那么原来控件对应的窗口将形成失效的指针而造成内存泄漏  
  >>   这是错的Top

相关问题

  • 动态生成.......
  • 动态生成列
  • 动态生成CheckBox
  • 求动态报表生成源码,可用分全部赠送。
  • 怎么用asp.net动态生成html并发送给客户端?
  • 怎样动态生成socket?
  • 还是动态生成!!!
  • 动态生成打印
  • 动态生成的组件
  • TADOQuery的动态生成。

关键词

  • 控件
  • 指针
  • ws
  • null
  • webbrowser
  • iwebbrowser
  • spwebbrowser
  • spoleobjectpreloadbrowser
  • spoleobj
  • cwebbrowser

得分解答快速导航

  • 帖主:nystroM
  • qrlvls
  • dandycheung
  • oyljerry
  • modena
  • modena
  • dandycheung

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo