首页 新闻 会员 周边

求助高手,EXCEPTION_ACCESS_VIOLATION错误怎么解决

0
悬赏园豆:15 [已解决问题] 解决于 2012-07-25 15:51

CAxWindow wndIEHost=GetDlgItem(IDC_EXPLORER1);
CComQIPtr<IWebBrowser2> spWebBrowser;
wndIEHost.QueryControl(&spWebBrowser);
CComVariant v;
spWebBrowser->Navigate(CComBSTR(bstrUrl),&v,&v,&v,&v);
Cbrowser_ie ie;
ie.DoModal(::GetActiveWindow(),0);
这是代码,当我运行的时候会提示EXCEPTION_ACCESS_VIOLATION错误,当我把spWebBrowser->Navigate(CComBSTR(bstrUrl),&v,&v,&v,&v);
注释掉后就没有错误了,请问这是怎么回事,我要怎么安全的把链接传递到webbrowser控件中。

一枚程序的主页 一枚程序 | 初学一级 | 园豆:108
提问于:2012-07-19 11:04
< >
分享
最佳答案
0

你能加些判断,比如 wndIEHost.IsWindow

HRESULT hr = wndIEHost.QueryControl(&spWebBrowser);

if(FAILED(hr)) 之类的。

收获园豆:15
Launcher | 高人七级 |园豆:45045 | 2012-07-19 11:12

这么写有什么用吗,我这样写了,但是这句代码还是有执行到spWebBrowser->Navigate(CComBSTR(bstrUrl),&v,&v,&v,&v);,还是报一样的错

HRESULT hr=wndIEHost.QueryControl(&spWebBrowser);

if(FAILED(hr))

{

CComVariant v;

spWebBrowser->Navigate(CComBSTR(bstrUrl),&v,&v,&v,&v);

}

一枚程序 | 园豆:108 (初学一级) | 2012-07-19 11:35

@newlist: if(FILED(hr)) 表示失败,你应该在 if(SUCCEEDED(hr))中执行Navigate.

Launcher | 园豆:45045 (高人七级) | 2012-07-19 13:10

@程序猿.码农: 我刚刚试了一下,发现spWebBrowser是空的,怎么会这样,有办法解决吗?

一枚程序 | 园豆:108 (初学一级) | 2012-07-19 13:47

@newlist: wndIEHost.IsWindow() 是 TRUE,还是 FALSE?

Launcher | 园豆:45045 (高人七级) | 2012-07-19 13:58

@程序猿.码农: 测了,false

一枚程序 | 园豆:108 (初学一级) | 2012-07-19 14:07

@newlist: 用 this->QueryControl(&spWebBrowser);

Launcher | 园豆:45045 (高人七级) | 2012-07-19 14:08

@程序猿.码农: 我this->在智能提示里找不到QueryControl,但是有QueryHost,我是不是少包含什么头文件

一枚程序 | 园豆:108 (初学一级) | 2012-07-19 14:11

@newlist:WTL 里面有个 TabBrowser 的示例,你照着那个做吧。

Launcher | 园豆:45045 (高人七级) | 2012-07-19 14:31

@程序猿.码农: 亲,还是不知道那,

HRESULT hr=wndIEHost.QueryControl(&spWebBrowser);

我安装教程的来做,但还是不知道为什么这里结果都是false。

一枚程序 | 园豆:108 (初学一级) | 2012-07-19 17:50

@newlist: 汗,是我做一个项目发给你,还是你发个项目给我,我给你改?

Launcher | 园豆:45045 (高人七级) | 2012-07-19 18:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册