Тут в принципе ,была тема но видимо на VC++
а как тоже самое на Билдере реализовать я не знаю
вот код , кстати он очень похож на VC как никак ATL
// *********************************************************************//
// CONNECTIONPOINT/EVENT PROXY
// CoClass : DEventInfo
// Event Interface : IDEventInfoEvents
// *********************************************************************//
template <class T>
class TEvents_DEventInfo : public <T,&DIID_IDEventInfoEvents,
CComUnkArray<CONNECTIONPOINT_ARRAY_SIZE> >
/* Note: if encountering problems with events, please change CComUnkArray to CComDynamicUnkArray in the line above. */
// зы менял не миеня толку нету :(
{
public:
HRESULT Fire_OnSend(BSTR* Str);
protected:
IDEventInfoEventsDisp m_EventIntfObj;
};
template <class T> HRESULT
TEvents_DEventInfo<T>::Fire_OnSend(BSTR* Str)
{
T * pT = (T*)this;
pT->Lock();
IUnknown ** pp = m_vec.begin();
while (pp < m_vec.end())
{
if (*pp != NULL)
{
m_EventIntfObj.Attach(*pp);
m_EventIntfObj.OnSend(Str);
m_EventIntfObj.Attach(0);
}
pp++;
}
pT->Unlock();
}
#endif // __TLB_NO_EVENT_WRAPPERS
}; // namespace Dserv_tlb
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Dserv_tlb;
#endif
Может что переделать ?