2010-01-21 54 views
2

我:如何找到要调用的函数名称?

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

什么函数名一个简单的示例? – kennytm 2010-01-21 07:12:42

+0

我不知道函数名称,这是我想知道的。 – Dzen 2010-01-21 07:37:20

回答

0

我想尝试获取对象(CWnd::GetControlUnknownIUnknown::QueryInterface)上ITypeInfo接口。然后,您可以使用ITypeInfo::GetNames函数和您的会员ID(0x18)来获取方法的名称。

+0

你能举一些例子吗? – Dzen 2010-01-21 10:04:33

+0

对不起,我现在没有时间去挖掘MSDN来获得正确的语法。我不想发布不起作用的示例。你可以尝试通过自己的方式来找出它(在MSDN中搜索提到的函数/接口),否则你将不得不等到明天:-) ... – MartinStettner 2010-01-21 10:27:03

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)); 
} 
相关问题