📄 sgipcp.h
字号:
#ifndef _SGIPCP_H_
#define _SGIPCP_H_
#include "ATLCPImplMT.h"
#include "Sgip.h"
template <class T>
class CProxy_IPSgipEvents : public IConnectionPointImplMT<T, &DIID__IPSgipEvents, CComDynamicUnkArray>
{
//Warning this class may be recreated by the wizard.
public:
HRESULT Fire_Deliver(BSTR bStrSPID, BSTR bStrMobileID, long lTP_pid, long lTP_udhi, BYTE bMessageCoding, long lMessageLength, VARIANT MessageContent, BSTR bstrReserved)
{
CComVariant varResult;
T* pT = static_cast<T*>(this);
int nConnectionIndex;
CComVariant* pvars = new CComVariant[8];
int nConnections = m_vec.GetSize();
for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
{
//pT->Lock();
//CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
//pT->Unlock();
CComPtr<IUnknown> sp;
sp.Attach (GetInterfaceAt(nConnectionIndex));
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
if (pDispatch != NULL)
{
VariantClear(&varResult);
pvars[7] = bStrSPID;
pvars[6] = bStrMobileID;
pvars[5] = lTP_pid;
pvars[4] = lTP_udhi;
pvars[3] = bMessageCoding;
pvars[2] = lMessageLength;
pvars[1] = MessageContent;
pvars[0] = bstrReserved;
DISPPARAMS disp = { pvars, NULL, 8, 0 };
pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
}
}
delete[] pvars;
return varResult.scode;
}
HRESULT Fire_Report(BSTR bStrMobileID, LONG lState, LONG lErrorCode, LONG lTime)
{
CComVariant varResult;
T* pT = static_cast<T*>(this);
int nConnectionIndex;
CComVariant* pvars = new CComVariant[4];
int nConnections = m_vec.GetSize();
for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
{
CComPtr<IUnknown> sp;
sp.Attach (GetInterfaceAt(nConnectionIndex));
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
if (pDispatch != NULL)
{
VariantClear(&varResult);
pvars[3] = bStrMobileID;
pvars[2] = lState;
pvars[1] = lErrorCode;
pvars[0] = lTime;
DISPPARAMS disp = { pvars, NULL, 4, 0 };
pDispatch->Invoke(0x2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
}
}
delete[] pvars;
return varResult.scode;
}
HRESULT Fire_UserReport(BSTR bStrMobileID, LONG lCondition)
{
CComVariant varResult;
T* pT = static_cast<T*>(this);
int nConnectionIndex;
CComVariant* pvars = new CComVariant[2];
int nConnections = m_vec.GetSize();
for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
{
CComPtr<IUnknown> sp;
sp.Attach (GetInterfaceAt(nConnectionIndex));
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
if (pDispatch != NULL)
{
VariantClear(&varResult);
pvars[1] = bStrMobileID;
pvars[0] = lCondition;
DISPPARAMS disp = { pvars, NULL, 2, 0 };
pDispatch->Invoke(0x3, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
}
}
delete[] pvars;
return varResult.scode;
}
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -