我得到了:
InvokeHelper(0x18, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
如果我们有对象方法或属性,如何获取函数名称 由dwDispID = 0x18指定?
void AFX_CDECL InvokeHelper(
DISPID dwDispID,
WORD wFlags,
VARTYPE vtRet,
void* pvRet,
const BYTE* pbParamInfo,
...
);
答案 0 :(得分:0)
我会尝试在对象(ITypeInfo
,CWnd::GetControlUnknown
)上获得IUnknown::QueryInterface
接口。然后,您可以使用ITypeInfo::GetNames
函数和您的成员ID(0x18
)来获取方法的名称。
答案 1 :(得分:0)
以下是如何获取名称的简单示例
void CTestDlg::OnTypeinfo()
{
HRESULT hr = S_OK;
COleDispatchDriver sc;
sc.CreateDispatch("Omtool.ServConnect.1"); // change for your type
CComPtr<ITypeInfo> pti;
hr = sc.m_lpDispatch->GetTypeInfo(0, GetUserDefaultLCID(), &pti);
ASSERT(SUCCEEDED(hr));
CComBSTR bstrName;
UINT nCount = 0;
hr = pti->GetNames(0x2, &bstrName, 1, &nCount); // change 0x2 for your ID
ASSERT(SUCCEEDED(hr));
}