Embeded Device开发指南
电话通讯处理
使用TAPI获得呼叫信息要经过如下步骤: 初始化线路、确定TAPI版本号、对指定线路进行监控、电话呼入时获得呼叫信息并分析、符合条件挂断电话、释放对线路的监控。
为了使用TAPI函数集,必须要包含tapi.h头文件及cellcore.lib库。
初始化TAPI,注册回调函数,并得到Line的数量
1.初始化线路 TAPI
LONG lineInitialize(
LPHLINEAPP lphLineApp, //线路TAPI应用的句柄指针
HINSTANCE hInstance, //实例句柄
LINECALLBACK lpfnCallback, //指向呼叫返回处理函数
LPCWSTR lpszAppName, // 指向用户提供的应用程序名字符串
LPDWORD lpdwNumDevs ); //指向可供使用的线路设备个数
lineInitialize完成对TAPI的初始化后,所有的事件都是通过lpfnCallback指向的回调函数传递给应用程序。回调函数的原型为:
VOID FAR PASCAL lineCallbackFunc(
DWORD hDevice, //可以是一个线路设备的句柄
DWORD dwMsg, //线路或呼叫消息
DWORD dwCallbackInstance,//传回应用程序的回调实例数据
DWORD dwParam1, //消息―具体的数据
DWORD dwParam2, //消息―具体的数据
DWORD dwParam3 //消息―具体的数据
);
2.确定TAPI版本号
使用lineNegotiateAPIVersion函数把API使用版本通知给TAPI,返回与TAPI通信所能使用的版本,同时获得线路设备支持的扩展功能。
3. 对线路进行监控
使用lineOpen函数打开线路,并指出是对线路的语音监控。
lineOpen: 打开Line(一般是两条线)
if ( lineNegotiateAPIVersion( LineApp, i, 0x00010000, 0x00020000, &ver,
&extensionID ) == 0 )
{
rc = lineOpen( LineApp, i, &LineHandles[i], ver, 0, (DWORD)this,
LINECALLPRIVILEGE_MONITOR, LINEMEDIAMODE_INTERACTIVEVOICE, NULL);
}
4. 电话呼入时获得呼叫信息并分析
跟踪呼入电话进入回调函数的消息,即dwMsg值,分别为:
①dwMsg = LINE_APPNEWCALL 有呼叫进来
②dwMsg = LINE_CALLSTATE 呼叫状态
dwParam1 = LINECALLSTATE_OFFERING 此时引起一个响铃
③dwMsg = LINE_CALLINFO 呼叫信息
dwParam1 = LINECALLINFOSTATE_ORIGIN 呼叫原始信息
④dwMsg = LINE_CALLINFO 呼叫信息
dwParam1 = LINECALLINFOSTATE_CALLERID 呼叫标识 可在这里处理归属地查询等等操作
绘图时避免闪烁(1)
减少绘制区域
绘图时避免闪烁(2)
采用双缓冲 原理:先将不同部分的内容绘制到内存DC中,然后再一
次性的绘制到设备DC上