在程序运行时,如何通过对象的IDispatch 获取接口中属性和方法的参数类型

解决方案 »

  1.   

    dongfa 先生你能不能说得具体点,问题的关键是如何得到参数的数据类型。IDispatch::GetTypeInfo真的可以办到吗??
      

  2.   

    ItypeInfo *pTypeInfo = NULL;
    pDisp->GetTypeinfo(0, 0, &pTypeInfo);pTypeInfo->GetFuncDesc 得到 FUNCDESC
    pTypeInfo->GetVarDesc  得到 VARDESC
    VARDESC中的elemdescVar应该就是了.具体的我也没有试过 :)
      

  3.   

    // These lines are from CLines::Create load type information for the
    // Lines collection from the type library. 
    hr = LoadTypeInfo(&pLines->m_ptinfo, IID_ILines);
    if (FAILED(hr))
    goto error;// Additional code omitted for brevity.// This function implements GetTypeInfo for the CLines collection.
    STDMETHODIMP
    CLines::GetTypeInfo(
    UINT iTInfo,
    LCID lcid,
    ITypeInfo FAR* FAR* ppTInfo)
    {
    *ppTInfo = NULL;if(iTInfo != 0)
    return ResultFromScode(DISP_E_BADINDEX);m_ptinfo->AddRef();
    *ppTInfo = m_ptinfo;  return NOERROR;
    }