⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 michellecti.h

📁 使用CT-C开发的一个CTI软电话系统,ActiveX形式的,仅供参考
💻 H
字号:
// MichelleCTI.h : Declaration of the CMichelleCTI

#ifndef __MICHELLECTI_H_
#define __MICHELLECTI_H_


/////////////////////////////////////////////////////////////////////////////
// CMichelleCTI
#include "resource.h"       // main symbols
#include "ctcv4CP.h"
#include <list>
using namespace std;

class CCTIEvent;
class CDirectoryNumber;
typedef list<CDirectoryNumber*> DNLIST;


#define UM_FATALERROR	WM_USER+1
#define UM_CTIEVENT		WM_USER+2
#define UM_DNEVENT		WM_USER+3
#define UM_DNDIALING	WM_USER+4
#define UM_CANCELDIAL	WM_USER+5


/////////////////////////////////////////
//Define error message
#define CTC_ERR_BASE		1000
#define CTC_DN_INITIALIZE_FAIL	CTC_ERR_BASE+1
#define CTC_DN_REGISTERED		CTC_ERR_BASE+2
#define CTC_TIMEOUT_ERR			CTC_ERR_BASE+3
#define CTC_RELEASECALL_ERR		CTC_ERR_BASE+4
#define CTC_MAKECALL_ERR		CTC_ERR_BASE+5
#define CTC_UNKNOWN_ERR			CTC_ERR_BASE+6
#define CTC_INVALID_PARAM		CTC_ERR_BASE+7


class ATL_NO_VTABLE CMichelleCTI : 
	public CComObjectRootEx<CComMultiThreadModel>,
	public CComCoClass<CMichelleCTI, &CLSID_MichelleCTI>,
	public IConnectionPointContainerImpl<CMichelleCTI>,
	public IMichelleCTI,
	public IWebCTI,
	public CProxy_IMichelleCTIEvents< CMichelleCTI >
{

public:
	CMichelleCTI()
	{
		m_pUnkMarshaler=NULL;

		
	}

DECLARE_REGISTRY_RESOURCEID(IDR_MICHELLECTI)
DECLARE_NOT_AGGREGATABLE(CMichelleCTI)
DECLARE_GET_CONTROLLING_UNKNOWN()

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CMichelleCTI)
	COM_INTERFACE_ENTRY(IConnectionPointContainer)
	COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
	COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
	COM_INTERFACE_ENTRY(IMichelleCTI)
	COM_INTERFACE_ENTRY(IWebCTI)
END_COM_MAP()
BEGIN_CONNECTION_POINT_MAP(CMichelleCTI)
CONNECTION_POINT_ENTRY(DIID__IMichelleCTIEvents)
END_CONNECTION_POINT_MAP()


	HRESULT FinalConstruct()
	{
		InitializeCriticalSection(&m_csList);
		return CoCreateFreeThreadedMarshaler(
			GetControllingUnknown(), &m_pUnkMarshaler.p);
	}

	void FinalRelease()
	{
		Uninitialize();
		DeleteCriticalSection(&m_csList);
		m_pUnkMarshaler.Release();
	}

	CComPtr<IUnknown> m_pUnkMarshaler;

public:
	//property

	//method
	BOOL DefaultHandler(); // the main cti message process handler
	void FatalError(); // the CTI server is unavailable, prepair to quit

private:
	//property
	//initialize cti info
	char m_strServerName[ctcNodeNameLen];
	char m_strLogicalIdentifier[ctcLogIdLen];
	char m_strNetType[ctcNetLen];

	//for vb info
	long m_lErrCode;
	ERRORTYPES m_ErrType;
	string m_ErrMsg;

	DNLIST m_dnlist;// the registered dn list
	CRITICAL_SECTION m_csList; // the lock for accessing dn list


	//method
	LPDN SearchRegisterdDN(char* dn); // Find this dn's index in the dn list
	void CleanDNList(); // clean up the whole dn list
	void ClearAPIInfo();  //clear variable for every api
public:
// IMichelleCTI
	STDMETHOD_(void, UnregisterDN)(/*[in]*/ LPDN dn);
	STDMETHOD_(LPDN, RegisterDN)(/*[in]*/ BSTR dn, /*[in, optional, defaultvalue(AT_DN)]*/ ADDRTYPES type, /*[in, optional]*/ BSTR acdpos);
	STDMETHOD_(void, Uninitialize)();
	STDMETHOD_(BOOL, Initialize)(/*[in]*/ PBXTYPES pbxtype, /*[in]*/ BSTR server, /*[in]*/ int port, /*[in]*/ BSTR name, /*[in]*/ BSTR pass);
	STDMETHOD(get_ErrMsg)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(get_ErrCode)(/*[out, retval]*/ long *pVal);
	STDMETHOD(get_ErrType)(/*[out, retval]*/ ERRORTYPES *pVal);
	STDMETHOD(get_Initialized)(/*[out, retval]*/ BOOL *pVal);

// IWebCTI
	STDMETHOD_(void, ReportResult)(/*[in]*/ BSTR ReqID, /*[in]*/ BOOL result, /*[in]*/ BSTR reason);
	STDMETHOD_(void, ReportConfirm)(/*[in]*/ BOOL confirm);
	STDMETHOD_(void, ReportStatus)(/*[in]*/ BSTR AgentID, /*[in]*/ AGENTSTATES AgentState);
	STDMETHOD_(void, Login)(/*[in]*/ BSTR AgentID);
	STDMETHOD_(void, Uninit)();
	STDMETHOD_(BOOL, Init)(/*[in]*/ BSTR server, /*[in]*/ int port);


};


#endif //__MICHELLECTI_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -