例如,ATL工程,选择支持连接点,那么如果我的接口函数叫做Result,那么在连接点事件处理类中就有如下的代码。
问题是,首先在整个工程中,我找不到m_vec的定义。
其次,这个连接点是存在组件端的呢,还是客户端的? 我既然是每个接口类都要实现连接点,那么一个连接点就是对应一个组件类型啊,为什么还要查询多个? 这里的多个连接点,到底是个什么概念?
template <class T>
class CProxy_IDispConnectEvents : public IConnectionPointImpl<T, &DIID__IDispConnectEvents, CComDynamicUnkArray>
{
//Warning this class may be recreated by the wizard.
public:
HRESULT Fire_Result(LONG nVal)
{
CComVariant varResult;
T* pT = static_cast<T*>(this);
int nConnectionIndex;
CComVariant* pvars = new CComVariant[1];
int nConnections = m_vec.GetSize();

for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
{
pT->Lock();
CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
pT->Unlock();
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
if (pDispatch != NULL)
{
VariantClear(&varResult);
pvars[0] = nVal;
DISPPARAMS disp = { pvars, NULL, 1, 0 };
pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
}
}
delete[] pvars;
return varResult.scode;

}
};