添加连接点不会生成 fire_* 方法

Posted

技术标签:

【中文标题】添加连接点不会生成 fire_* 方法【英文标题】:Add Connection Points doesn't generate fire_* methods 【发布时间】:2021-02-17 02:52:53 【问题描述】:

我正在尝试在 Visual Studio 2019 的 ATL 项目上创建回调函数。当我使用“添加连接点”时,Visual Studio(2017 和 2019)不会在 CProxy_*Events 中生成 fire_* 方法。

请帮忙解决这个问题。

【问题讨论】:

需要更多细节。 VS 仍然能够生成像过去一样的东西。它有没有给你任何输出?此外,如果您试图从嵌入式 IDL 中获取它,您可能想尝试使用已经从您的代码构建的类型库。 【参考方案1】:

ConnectionPoint 错误是旧的 Visual Studio 错误。我展示了我的 Fire_* 方法。将其插入您的 CProxy_* 类中:

HRESULT Fire_On/*event_name*/(/*args list*/) 

    HRESULT hr = S_OK;
    T* pThis = static_cast<T*>(this);
    int cConnections = m_vec.GetSize();
    for (int iConnection = 0; iConnection < cConnections; iConnection++)
    
        pThis->Lock();
        CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
        pThis->Unlock();
        IDispatch* pConnection = static_cast<IDispatch*>(punkConnection.p);

        if (pConnection) 
        
            CComVariant avarParams[/*count of args list*/];
            avarParams[0] = /*arg from args list*/;
            avarParams[1] = /*arg from args list*/;
            /*other params*/
            avarParams[/*N-1*/] = /*arg from args list*/;
            DISPPARAMS params =  avarParams, nullptr, /*count of args list*/, 0 ;
            hr = pConnection->Invoke(/*number of function*/, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, 
                nullptr, nullptr, nullptr);
        
    
    return hr;

【讨论】:

以上是关于添加连接点不会生成 fire_* 方法的主要内容,如果未能解决你的问题,请参考以下文章

csharp #fire #xaf的#firebird连接提供程序

Android- Open Fire、云连接服务器和 GCM 之间的区别

卡在 Android TV / Fire TV 的 Charles 代理证书安装中

js中fireEvent和onclick的区别

git生成ssh公钥方法--远程连接github仓库

如何从 fire-base 为不同的产品风格 Android 生成不同的 json 文件