void CPingDlg::OnDocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT FAR* URL)
{
// TODO: Add your control notification handler code here
CComPtr <IDispatch>pDocDispatch = m_myie.GetDocument();
int subindex,randindex;
if(pDocDispatch.p !=NULL)
{
CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> pHTMLDocument2(pDocDispatch);
CComPtr<IHTMLAnchorElement> pLoct; long iNum;
if(pHTMLDocument2.p !=NULL)
{
CComPtr<IHTMLElementCollection> pElements;
pHTMLDocument2->get_links(&pElements);
pElements->get_length(&iNum);
int i;
CComPtr<IDispatch> pDisp;
for(i=0;i<iNum;i++)
{
CComVariant index;
CComVariant comvar(i);
comvar.ChangeType(VT_UINT);
pElements->item(comvar,index,&pDisp);
////问题出在下面这一行
pDisp->QueryInterface( IID_IHTMLAnchorElement,(void **) &pLoct);
BSTR String;
pLoct->get_href(&String);
CString str=String;
MessageBox(str);
}
}
}
}
////问题出在下面这一行,i=0时正确,i=1时,程序就崩了。实际环境中iNum=33
pDisp->QueryInterface( IID_IHTMLAnchorElement,(void **) &pLoct); 看不出来哪里错了,也不知道怎么调试,请高人赐教。谢谢了。
{
// TODO: Add your control notification handler code here
CComPtr <IDispatch>pDocDispatch = m_myie.GetDocument();
int subindex,randindex;
if(pDocDispatch.p !=NULL)
{
CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> pHTMLDocument2(pDocDispatch);
CComPtr<IHTMLAnchorElement> pLoct; long iNum;
if(pHTMLDocument2.p !=NULL)
{
CComPtr<IHTMLElementCollection> pElements;
pHTMLDocument2->get_links(&pElements);
pElements->get_length(&iNum);
int i;
CComPtr<IDispatch> pDisp;
for(i=0;i<iNum;i++)
{
CComVariant index;
CComVariant comvar(i);
comvar.ChangeType(VT_UINT);
pElements->item(comvar,index,&pDisp);
////问题出在下面这一行
pDisp->QueryInterface( IID_IHTMLAnchorElement,(void **) &pLoct);
BSTR String;
pLoct->get_href(&String);
CString str=String;
MessageBox(str);
}
}
}
}
////问题出在下面这一行,i=0时正确,i=1时,程序就崩了。实际环境中iNum=33
pDisp->QueryInterface( IID_IHTMLAnchorElement,(void **) &pLoct); 看不出来哪里错了,也不知道怎么调试,请高人赐教。谢谢了。
解决方案 »
- IWebBrowser弹出脚本错误
- CRichEditCtrl的FindText在win7和2003下失败!!!
- 关于findwindow的一个小问题
- 这个界面是用什么控件做的(或如何做),具体怎么弄?
- 为什么使用mcscpy拷贝后,值发生了变化呢?
- [100分]用CToolTipCtrl类给动态生成的CImage添加鼠标悬停提示时出错?
- 我用文件处理出现一个问题
- 声明了一个返回值为对象指针的member function,可是指针部分好象有问题
- 请问如何将由accept(ss,(struct sockaddr*)&sockaddrin1,&iaddrsize)获得的IP地址转换成字符串?
- 用ATL做的COM,在我的客户端能调用,在其他的人机器上却不能,怎么回事??
- 关于修改DLL中函数
- 下面代码有什么问题吗?
把PDISP 和pLoct 放在FOR 里定义就可了,但不知道为什么要这样做。
感觉应该是要初始化PDISP 和pLoct ,但初始化怎么写呢?