📄 tapiconn.cpp
字号:
long pReg = 0;
// register callback for this address
hr = m_pTAPI3->RegisterCallNotifications(pAddress,
VARIANT_TRUE,
VARIANT_TRUE,
lMediaType,
0,
&pReg);
// Create a TAPI address object
CTAPIAddr *pAddr = new CTAPIAddr(m_pTAPI3,
Addr,
DialAddr,
lMediaType,
pReg,
pAddress);
// Add to TAPI Address Map, key on display name
// No need to AddRef as 'new' already called AddRef
//CTAPIAddr::AddToAddrMap(CString(Addr), pAddr);
// Add to TAPI Address Map, key on dialable address
CTAPIAddr::AddToAddrMap(CString(DialAddr), pAddr);
pAddr->Release();
if (hr != S_OK)
{
PRINT_INIT(-1, 0, "Failed to register Call Notification for the above address, hr=%x", hr);
}
}
// Release the line
pAddress->Release();
// Free all the BSTRs
SysFreeString(Addr);
SysFreeString(Provider);
SysFreeString(DialAddr);
}
else
{
// No more addresses, exit while loop
break;
}
}
pEnumAddress->Release();
}
return 0;
}
CString CTAPIConn::GetASCIITAPIError(long lError)
{
static CString sErrMsg;
switch(lError)
{
case LINEERR_BADDEVICEID: sErrMsg=_T("LINEERR_BADDEVICEID"); break;
case LINEERR_NODRIVER: sErrMsg=_T("LINEERR_NODRIVER"); break;
case LINEERR_INCOMPATIBLEAPIVERSION: sErrMsg=_T("LINEERR_INCOMPATIBLEAPIVERSION"); break;
case LINEERR_OPERATIONFAILED: sErrMsg=_T("LINEERR_OPERATIONFAILED"); break;
case LINEERR_INVALAPPHANDLE: sErrMsg=_T("LINEERR_INVALAPPHANDLE"); break;
case LINEERR_RESOURCEUNAVAIL: sErrMsg=_T("LINEERR_RESOURCEUNAVAIL"); break;
case LINEERR_INVALPOINTER: sErrMsg=_T("LINEERR_INVALPOINTER"); break;
case LINEERR_UNINITIALIZED: sErrMsg=_T("LINEERR_UNINITIALIZED"); break;
case LINEERR_NOMEM: sErrMsg=_T("LINEERR_NOMEM"); break;
case LINEERR_OPERATIONUNAVAIL: sErrMsg=_T("LINEERR_OPERATIONUNAVAIL"); break;
case LINEERR_NODEVICE: sErrMsg=_T("LINEERR_NODEVICE"); break;
default: sErrMsg.Format(_T("Unhandled TAPI Error (%d)"), lError); break;
}
return sErrMsg;
}
void CTAPIConn::GetASCIIMediaType(long& Type, CString& T)
{
T.Empty();
if (Type & TAPIMEDIATYPE_AUDIO) T += _T("Audio ");
if (Type & TAPIMEDIATYPE_VIDEO) T += _T("Video ");
if (Type & TAPIMEDIATYPE_DATAMODEM) T += _T("DataModem ");
if (Type & TAPIMEDIATYPE_G3FAX) T += _T("G3FAX ");
}
void CTAPIConn::GetASCIICallOrigin(long dwOrigin, CString& sOrigin)
{
sOrigin.Empty();
if (dwOrigin & LINECALLORIGIN_CONFERENCE) sOrigin += _T("LINECALLORIGIN_CONFERENCE ");
if (dwOrigin & LINECALLORIGIN_EXTERNAL) sOrigin += _T("LINECALLORIGIN_EXTERNAL ");
if (dwOrigin & LINECALLORIGIN_INBOUND) sOrigin += _T("LINECALLORIGIN_INBOUND ");
if (dwOrigin & LINECALLORIGIN_INTERNAL) sOrigin += _T("LINECALLORIGIN_INTERNAL ");
if (dwOrigin & LINECALLORIGIN_OUTBOUND) sOrigin += _T("LINECALLORIGIN_OUTBOUND ");
if (dwOrigin & LINECALLORIGIN_UNAVAIL) sOrigin += _T("LINECALLORIGIN_UNAVAIL ");
if (dwOrigin & LINECALLORIGIN_UNKNOWN) sOrigin += _T("LINECALLORIGIN_UNKNOWN ");
}
void CTAPIConn::GetASCIICallReason(long dwReason, CString& sReason)
{
sReason.Empty();
if (dwReason & LINECALLREASON_DIRECT) sReason += _T("LINECALLREASON_DIRECT ");
if (dwReason & LINECALLREASON_FWDBUSY) sReason += _T("LINECALLREASON_FWDBUSY ");
if (dwReason & LINECALLREASON_FWDNOANSWER) sReason += _T("LINECALLREASON_FWDNOANSWER ");
if (dwReason & LINECALLREASON_FWDUNCOND) sReason += _T("LINECALLREASON_FWDUNCOND ");
if (dwReason & LINECALLREASON_UNPARK) sReason += _T("LINECALLREASON_UNPARK ");
if (dwReason & LINECALLREASON_REDIRECT) sReason += _T("LINECALLREASON_REDIRECT ");
if (dwReason & LINECALLREASON_CALLCOMPLETION) sReason += _T("LINECALLREASON_CALLCOMPLETION ");
if (dwReason & LINECALLREASON_TRANSFER) sReason += _T("LINECALLREASON_TRANSFER ");
if (dwReason & LINECALLREASON_REMINDER) sReason += _T("LINECALLREASON_REMINDER ");
if (dwReason & LINECALLREASON_UNKNOWN) sReason += _T("LINECALLREASON_UNKNOWN ");
if (dwReason & LINECALLREASON_UNAVAIL) sReason += _T("LINECALLREASON_UNAVAIL ");
if (dwReason & LINECALLREASON_INTRUDE) sReason += _T("LINECALLREASON_INTRUDE ");
if (dwReason & LINECALLREASON_PARKED) sReason+= _T("LINECALLREASON_PARKED ");
if (dwReason & LINECALLREASON_PICKUP) sReason += _T("sLINECALLREASON_PICKUPOrigin ");
if (dwReason & LINECALLREASON_CAMPEDON) sReason += _T("LINECALLREASON_CAMPEDON ");
if (dwReason & LINECALLREASON_ROUTEREQUEST) sReason += _T("LINECALLREASON_ROUTEREQUEST ");
}
void CTAPIConn::GetASCIICallState(CALL_STATE cState, CString& sState)
{
sState.Empty();
switch(cState)
{
case CS_IDLE:
sState = _T("Idle");
break;
case CS_INPROGRESS:
sState = _T("In Progress");
break;
case CS_CONNECTED:
sState = _T("Connected");
break;
case CS_DISCONNECTED:
sState = _T("Disconnected");
break;
case CS_OFFERING:
sState = _T("Offering");
break;
case CS_HOLD:
sState = _T("Hold");
break;
case CS_QUEUED:
sState = _T("Queued");
break;
}
}
void CTAPIConn::GetASCIICallInfoChange(CALLINFOCHANGE_CAUSE Cause, CString& sCause)
{
sCause.Empty();
switch (Cause)
{
case CIC_OTHER:
{
sCause = _T("Other ");
break;
}
case CIC_DEVSPECIFIC:
{
sCause = _T("DevSpecific ");
break;
}
case CIC_BEARERMODE:
{
sCause = _T("BearerMode ");
break;
}
case CIC_RATE:
{
sCause = _T("Rate ");
break;
}
case CIC_APPSPECIFIC:
{
sCause = _T("AppSpecific ");
break;
}
case CIC_CALLID:
{
sCause = _T("CallId ");
break;
}
case CIC_RELATEDCALLID:
{
sCause = _T("RelatedCallId ");
break;
}
case CIC_ORIGIN:
{
sCause = _T("Origin ");
break;
}
case CIC_REASON:
{
sCause = _T("Reason ");
break;
}
case CIC_COMPLETIONID:
{
sCause = _T("CompletionId ");
break;
}
case CIC_NUMOWNERINCR:
{
sCause = _T("NumOwnerIncr ");
break;
}
case CIC_NUMOWNERDECR:
{
sCause = _T("NumOwnerDecr ");
break;
}
case CIC_NUMMONITORS:
{
sCause = _T("NumMonitors ");
break;
}
case CIC_TRUNK:
{
sCause = _T("Trunk ");
break;
}
case CIC_CALLERID:
{
sCause = _T("CallerId ");
break;
}
case CIC_CALLEDID:
{
sCause = _T("CalledId ");
break;
}
case CIC_CONNECTEDID:
{
sCause = _T("ConnectedId ");
break;
}
case CIC_REDIRECTIONID:
{
sCause = _T("RedirectionId ");
break;
}
case CIC_REDIRECTINGID:
{
sCause = _T("RedirectingId ");
break;
}
case CIC_USERUSERINFO:
{
sCause = _T("UserUserInfo ");
break;
}
case CIC_HIGHLEVELCOMP:
{
sCause = _T("HighLevelComp ");
break;
}
case CIC_LOWLEVELCOMP:
{
sCause = _T("LowLevelComp ");
break;
}
case CIC_CHARGINGINFO:
{
sCause = _T("ChargingInfo ");
break;
}
case CIC_TREATMENT:
{
sCause = _T("Treatment ");
break;
}
case CIC_CALLDATA:
{
sCause = _T("CallData ");
break;
}
case CIC_PRIVILEGE:
{
sCause = _T("Privilege ");
break;
}
case CIC_MEDIATYPE:
{
sCause = _T("MediaType ");
break;
}
default:
{
sCause = _T("???");
break;
}
}
}
void CTAPIConn::GetASCIICallHubEvent(CALLHUB_EVENT e, CString& s)
{
s.Empty();
switch(e)
{
case CHE_CALLJOIN:
s = _T("Callhub: Call Join");
break;
case CHE_CALLLEAVE:
s = _T("Callhub: Call Leave");
break;
case CHE_CALLHUBNEW:
s = _T("Callhub: New");
break;
case CHE_CALLHUBIDLE:
s = _T("Callhub: Idle");
break;
}
}
void CTAPIConn::GetASCIICallStateEventCause(CALL_STATE_EVENT_CAUSE Cause, CString& s)
{
s.Empty();
switch(Cause)
{
case CEC_NONE:
s = _T("None");
break;
case CEC_DISCONNECT_NORMAL:
s = _T("Normal");
break;
case CEC_DISCONNECT_BUSY:
s = _T("Busy");
break;
case CEC_DISCONNECT_BADADDRESS:
s = _T("Bad Address");
break;
case CEC_DISCONNECT_NOANSWER:
s = _T("No Answer");
break;
case CEC_DISCONNECT_CANCELLED:
s = _T("Cancelled");
break;
case CEC_DISCONNECT_REJECTED:
s = _T("Rejected");
break;
case CEC_DISCONNECT_FAILED:
s = _T("Failed");
break;
default:
s = _T("???");
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -