描述:
每次走到spDisp = pDispParams->rgvarg[3].pdispVal就报错,
rgvarg[3]数组中的参数老是设置不对,我都从0,1,2,3调,有参考的资料吗?
还有这代码能获取URL吗?
源码如下:
case DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEDOWN:
{
CComPtr<IDispatch> spDisp;
spDisp = pDispParams->rgvarg[3].pdispVal; //就这出问题
if (spDisp)
{
CComQIPtr<IHTMLEventObj, &IID_IHTMLEventObj> spEventObj(spDisp);
if (spEventObj)
{
long nMouseBtn = 0;
HRESULT hr = spEventObj->get_button(&nMouseBtn);
if (SUCCEEDED(hr) && nMouseBtn == 0)
{
*m_pbUserClickedLink = FALSE;
break;
}
CComPtr<IHTMLElement> spElem;
hr = spEventObj->get_srcElement(&spElem);
if (SUCCEEDED(hr) && spElem)
{
CComBSTR bsTagName;
CComBSTR bsHTMLURL;
while (1)
{
spElem->get_tagName(&bsTagName);
bsTagName.ToUpper();
if (bsTagName == L"BODY"|| bsTagName == L"AREA" || bsTagName == L"INPUT" || bsTagName == L"IMG")
break; // did not click a link
if (bsTagName == L"A")
{ *m_pbUserClickedLink = TRUE;
spElem->get_innerHTML(&bsHTMLURL); //在这获取URL
......
break;
}
CComPtr<IHTMLElement> spParentElem;
hr = spElem->get_parentElement(&spParentElem);
if (FAILED(hr) || !spParentElem)
break;
spElem = spParentElem;
}
}
}
}
}
解决方案1:
看
http://community.csdn.net/Expert/topic/4218/4218433.xml?temp=.2176325
里我发的代码。
http://community.csdn.net/Expert/topic/4776/4776240.xml?temp=.385586