| #ifndef _ACTIVEXPJSUACP_H_ |
| #define _ACTIVEXPJSUACP_H_ |
| |
| //#import "C:\project\pjproject\pjsip-apps\src\activex-pjsua\activex-pjsua.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids //"Import typelib" |
| template <class T> |
| class CProxy_IPjsuaEvents : public IConnectionPointImpl<T, &DIID__IPjsuaEvents, CComDynamicUnkArray> |
| { |
| //Warning this class may be recreated by the wizard. |
| public: |
| VOID Fire_OnCallState(INT call_index, Pjsua_Call_Info * pInfo) |
| { |
| T* pT = static_cast<T*>(this); |
| int nConnectionIndex; |
| CComVariant* pvars = new CComVariant[2]; |
| int nConnections = m_vec.GetSize(); |
| HRESULT hr; |
| |
| IRecordInfo *pRI = NULL; |
| hr = GetRecordInfoFromGuids( LIBID_ACTIVEPJSUALib, |
| 1, 0, |
| 0, |
| IID_Pjsua_Call_Info, |
| &pRI ); |
| assert(SUCCEEDED(hr)); |
| |
| pvars[1] = call_index; |
| |
| VARIANT v; |
| memset(&v, 0, sizeof(v)); |
| v.vt = VT_RECORD; |
| v.pRecInfo = pRI; |
| v.pvRecord = pInfo; |
| |
| pvars[0] = v; |
| |
| 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) |
| { |
| |
| DISPPARAMS disp = { pvars, NULL, 2, 0 }; |
| hr = pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL); |
| } |
| } |
| delete[] pvars; |
| |
| } |
| VOID Fire_OnRegState(INT acc_index) |
| { |
| 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) |
| { |
| pvars[0] = acc_index; |
| DISPPARAMS disp = { pvars, NULL, 1, 0 }; |
| pDispatch->Invoke(0x2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL); |
| } |
| } |
| delete[] pvars; |
| |
| } |
| VOID Fire_OnBuddyState(INT buddy_index) |
| { |
| 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) |
| { |
| pvars[0] = buddy_index; |
| DISPPARAMS disp = { pvars, NULL, 1, 0 }; |
| pDispatch->Invoke(0x3, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL); |
| } |
| } |
| delete[] pvars; |
| |
| } |
| VOID Fire_OnIncomingPager(INT call_index, BSTR fromUri, BSTR toURI, BSTR pagerText) |
| { |
| T* pT = static_cast<T*>(this); |
| int nConnectionIndex; |
| CComVariant* pvars = new CComVariant[4]; |
| 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) |
| { |
| pvars[3] = call_index; |
| pvars[2] = fromUri; |
| pvars[1] = toURI; |
| pvars[0] = pagerText; |
| DISPPARAMS disp = { pvars, NULL, 4, 0 }; |
| pDispatch->Invoke(0x4, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL); |
| } |
| } |
| delete[] pvars; |
| |
| } |
| VOID Fire_OnTypingIndication(INT call_index, BSTR fromUri, BSTR toURI, INT isTyping) |
| { |
| T* pT = static_cast<T*>(this); |
| int nConnectionIndex; |
| CComVariant* pvars = new CComVariant[4]; |
| 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) |
| { |
| pvars[3] = call_index; |
| pvars[2] = fromUri; |
| pvars[1] = toURI; |
| pvars[0] = isTyping; |
| DISPPARAMS disp = { pvars, NULL, 4, 0 }; |
| pDispatch->Invoke(0x5, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL); |
| } |
| } |
| delete[] pvars; |
| |
| } |
| }; |
| #endif |