添加连接点不会生成 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, ¶ms,
nullptr, nullptr, nullptr);
return hr;
【讨论】:
以上是关于添加连接点不会生成 fire_* 方法的主要内容,如果未能解决你的问题,请参考以下文章
csharp #fire #xaf的#firebird连接提供程序
Android- Open Fire、云连接服务器和 GCM 之间的区别