oleview: Skip IDispatch functions in dual interfaces properly.
This commit is contained in:
parent
e314ef699e
commit
af1c1484d7
@ -512,12 +512,17 @@ static int EnumFuncs(ITypeInfo *pTypeInfo, TYPEATTR *pTypeAttr, HTREEITEM hParen
|
|||||||
|
|
||||||
cFuncs = pTypeAttr->cFuncs;
|
cFuncs = pTypeAttr->cFuncs;
|
||||||
|
|
||||||
for(i=0; i<cFuncs; i++)
|
i = 0;
|
||||||
|
if(pTypeAttr->wTypeFlags & TYPEFLAG_FDUAL) { /* skip 7 members of IDispatch */
|
||||||
|
cFuncs += 7;
|
||||||
|
i += 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(; i<cFuncs; i++)
|
||||||
{
|
{
|
||||||
TYPELIB_DATA *tld;
|
TYPELIB_DATA *tld;
|
||||||
|
|
||||||
if(FAILED(ITypeInfo_GetFuncDesc(pTypeInfo, i, &pFuncDesc))) continue;
|
if(FAILED(ITypeInfo_GetFuncDesc(pTypeInfo, i, &pFuncDesc))) continue;
|
||||||
if(pTypeAttr->wTypeFlags & TYPEFLAG_FDUAL && pFuncDesc->memid >= MIN_FUNC_ID) continue;
|
|
||||||
|
|
||||||
if(FAILED(ITypeInfo_GetDocumentation(pTypeInfo, pFuncDesc->memid, &bstrName,
|
if(FAILED(ITypeInfo_GetDocumentation(pTypeInfo, pFuncDesc->memid, &bstrName,
|
||||||
&bstrHelpString, NULL, NULL))) continue;
|
&bstrHelpString, NULL, NULL))) continue;
|
||||||
@ -529,7 +534,7 @@ static int EnumFuncs(ITypeInfo *pTypeInfo, TYPEATTR *pTypeAttr, HTREEITEM hParen
|
|||||||
U(tvis).item.pszText = bstrName;
|
U(tvis).item.pszText = bstrName;
|
||||||
U(tvis).item.lParam = (LPARAM) tld;
|
U(tvis).item.lParam = (LPARAM) tld;
|
||||||
bFirst = TRUE;
|
bFirst = TRUE;
|
||||||
if(pFuncDesc->memid < MIN_FUNC_ID)
|
if(pFuncDesc->memid < MIN_FUNC_ID || pTypeAttr->wTypeFlags & TYPEFLAG_FDUAL)
|
||||||
{
|
{
|
||||||
AddToTLDataStrW(tld, wszOpenBrackets1);
|
AddToTLDataStrW(tld, wszOpenBrackets1);
|
||||||
bFirst = FALSE;
|
bFirst = FALSE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user