如何增加视图中 ActiveX 控件的事件处理函数

翻译|其它|编辑:郝浩|2004-01-16 09:52:00.000|阅读 1518 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


我创建了一个如何使用 COleClientItem 对象,我想使用它的自动化方法。有什么方法来获得 IDispatch 的接口?我试过以 CCmdTarget 为基类的的 GetIDispatch 函数但却出错,我用过 EnableAutomation 和 GetIDispatch,却什么也没得到。
  MSDN 中有一篇关于这个的文章(TN039)。如下的代码也可能是你所需要的:

LPDISPATCH CMyClientItem::GetIDispatch()
{
    ASSERT_VALID(this);
    ASSERT(m_lpObject != NULL);

    LPUNKNOWN lpUnk = m_lpObject;

    Run(); // must be running

    LPOLELINK lpOleLink = NULL;
    if (m_lpObject->QueryInterface(IID_IOleLink,
        (LPVOID FAR*)&lpOleLink) == NOERROR)
    {
        ASSERT(lpOleLink != NULL);
        lpUnk = NULL;
        if (lpOleLink->GetBoundSource(&lpUnk) != NOERROR)
        {
            TRACE0("Warning: Link is not connected! ");
            lpOleLink->Release();
            return NULL;
        }
        ASSERT(lpUnk != NULL);
    }

    LPDISPATCH lpDispatch = NULL;
    if (lpUnk->QueryInterface(IID_IDispatch, &lpDispatch)
        != NOERROR)
    {
        TRACE0("Warning: does not support IDispatch! ");
        return NULL;
    }

    ASSERT(lpDispatch != NULL);
    return lpDispatch;
}
 



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP