以下的代码是用开发一个类似于网络实名这样的IE插件:
case DISPID_BEFORENAVIGATE2:
{
//CComBSTR url = ((*pDispParams).rgvarg)[5].pvarVal->bstrVal;
char * strurl;
if (pDispParams->cArgs >= 5 && pDispParams->rgvarg[5].vt == (VT_BYREF|VT_VARIANT))
{
CComVariant varURL(*pDispParams->rgvarg[5].pvarVal);
varURL.ChangeType(VT_BSTR);
strurl = OLE2A(varURL.bstrVal);
}
if (strstr(strurl, "软件"))
{
CComPtr<IWebBrowser2> spBrowser;
CComPtr<IDispatch> spDisp = ((*pDispParams).rgvarg)[6].pdispVal;
spDisp->QueryInterface(IID_IWebBrowser2, (void**)&spBrowser);
spBrowser->Stop();
CComBSTR newURL = L"http://www.csdn.com"; pDispParams->rgvarg[4]= pDispParams->rgvarg[4] & (~navAllowAutosearch ); spBrowser->Navigate(newURL, &pDispParams->rgvarg[4],&pDispParams->rgvarg[3],
&pDispParams->rgvarg[2],&pDispParams->rgvarg[1]);
((*pDispParams).rgvarg)[0].boolVal = TRUE;
}
break;
}
编译时提示binary '&' : 'struct tagVARIANT' does not define this operator or a conversion to a type acceptable to the predefined operator的错误
是在pDispParams->rgvarg[4]= pDispParams->rgvarg[4] & (~navAllowAutosearch );这句上,
请问这怎么解决?
case DISPID_BEFORENAVIGATE2:
{
//CComBSTR url = ((*pDispParams).rgvarg)[5].pvarVal->bstrVal;
char * strurl;
if (pDispParams->cArgs >= 5 && pDispParams->rgvarg[5].vt == (VT_BYREF|VT_VARIANT))
{
CComVariant varURL(*pDispParams->rgvarg[5].pvarVal);
varURL.ChangeType(VT_BSTR);
strurl = OLE2A(varURL.bstrVal);
}
if (strstr(strurl, "软件"))
{
CComPtr<IWebBrowser2> spBrowser;
CComPtr<IDispatch> spDisp = ((*pDispParams).rgvarg)[6].pdispVal;
spDisp->QueryInterface(IID_IWebBrowser2, (void**)&spBrowser);
spBrowser->Stop();
CComBSTR newURL = L"http://www.csdn.com"; pDispParams->rgvarg[4]= pDispParams->rgvarg[4] & (~navAllowAutosearch ); spBrowser->Navigate(newURL, &pDispParams->rgvarg[4],&pDispParams->rgvarg[3],
&pDispParams->rgvarg[2],&pDispParams->rgvarg[1]);
((*pDispParams).rgvarg)[0].boolVal = TRUE;
}
break;
}
编译时提示binary '&' : 'struct tagVARIANT' does not define this operator or a conversion to a type acceptable to the predefined operator的错误
是在pDispParams->rgvarg[4]= pDispParams->rgvarg[4] & (~navAllowAutosearch );这句上,
请问这怎么解决?
如果是LONG型,可
pDispParams->rgvarg[4].lVal = pDispParams->rgvarg[4].lVal & (~navAllowAutosearch );