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控件中。
你能加些判断,比如 wndIEHost.IsWindow
HRESULT hr = wndIEHost.QueryControl(&spWebBrowser);
if(FAILED(hr)) 之类的。
这么写有什么用吗,我这样写了,但是这句代码还是有执行到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);
}
@newlist: if(FILED(hr)) 表示失败,你应该在 if(SUCCEEDED(hr))中执行Navigate.
@程序猿.码农: 我刚刚试了一下,发现spWebBrowser是空的,怎么会这样,有办法解决吗?
@newlist: wndIEHost.IsWindow() 是 TRUE,还是 FALSE?
@程序猿.码农: 测了,false
@newlist: 用 this->QueryControl(&spWebBrowser);
@程序猿.码农: 我this->在智能提示里找不到QueryControl,但是有QueryHost,我是不是少包含什么头文件
@newlist:WTL 里面有个 TabBrowser 的示例,你照着那个做吧。
@程序猿.码农: 亲,还是不知道那,
HRESULT hr=wndIEHost.QueryControl(&spWebBrowser);
我安装教程的来做,但还是不知道为什么这里结果都是false。
@newlist: 汗,是我做一个项目发给你,还是你发个项目给我,我给你改?