windows mobile打电话-初始化lineInitialize

拨打电话的步骤:1.  初始化初始化的时候,应用程序会建立于TAPI之间的通信。使用lineInitialize函数来进行初始化动作,应用程序会提交一个回调函数给TAPI,同样也可以使用更高级的lineInitializeEx函数,它不仅能使用回调函数,还可以利用Windows系统的时间消息通知进行处理。利用事件消息机制,应用程序可以接受TAPI发送的消息,当事件到达时,使用TAPI提供的lineGetMessage函数来获得具体消息。LONG WINAPI lineInitializeEx( LPH
摘要由CSDN通过智能技术生成

拨打电话的步骤:

1.  初始化

初始化的时候,应用程序会建立于TAPI之间的通信。使用lineInitialize函数来进行初始化动作,应用程序会提交一个回调函数给TAPI,同样也可以使用更高级的lineInitializeEx函数,它不仅能使用回调函数,还可以利用Windows系统的时间消息通知进行处理。利用事件消息机制,应用程序可以接受TAPI发送的消息,当事件到达时,使用TAPI提供的lineGetMessage函数来获得具体消息。

LONG WINAPI lineInitializeEx(
LPHLINEAPP lphLineApp,
HINSTANCE hInstance,
LINECALLBACK lpfnCallback,
LPCWSTR lpszFriendlyAppName,
LPDWORD lpdwNumDevs,
LPDWORD lpdwAPIVersion,
LPLINEINITIALIZEEXPARAMS lpLineInitializeExParams
)
;

该函数包含有7个参数,LPLINEINITIALIZEEXPARAMS指向一个 LINEINITIALIZEEXPARAMS结构。第一个参数 lphLineApp是应用程序的TAPI句柄;hInstance是程序的实例句柄, lpfnCallback是回调函数指针,如果值设为NULL或应用程序使用时间通知机制那么将忽略这个参数。

          回调函数的CallBack结构如下

VOID FAR PASCAL lineCallbackFunc(
DWORD hDevice,
DWORD dwMsg,
DWORD dwCallbackInstance,
DWORD dwParam1,
DWORD dwParam2,
DWORD dwParam3
);

参数 hDevice 是线路设备句柄或是一个呼叫相关联的呼叫句柄。 dwMsg 是对应的消息,
dwCallbackInstance
是回调实例, dwParam1~ dwParam3 参数是消息的具体参数细节, 在回调
函数里可以监测一个呼叫的各个状态。

4 个参数 lpszFriendlyAppName 指向一个字符串, 包含一个应用提供的名称, 这个名称出
现在
LINECALLINFO 结构中用以显示是哪个应用程序的结果。如果 lpszFriendlyAppName 设置
NULL , 那么使用 GetModuleFileName 得到的文件名, 就是程序的模块文件名称。 lpdwNumDevs
参数得到设备上有多少个可以使用线路设备, 它指向一个
DWORD 类型的指针, lpdwAPIVersion
说明了
TAPI 支持的最高的版本号, LPLINEINITIALIZEEXPARAMS 指向了一个 LPLINEINITIA-
LIZEEXPARAMS
结构, 该结构定义如下:

typedef struct lineinitializeexparams_tag {
DWORD dwTotalSize;
DWORD dwNeededSize;
DWORD dwUsedSize;
DWORD dwOptions;
union {
HANDLE hEvent;
HANDLE hCompletionPort;
} Handles;
DWORD dwCompletionKey;
} LINEINITIALIZEEXPARAMS;

LINEINITIALIZEEXPARAMS 的第一个和第二个字段分别是结构的大小和需要结构的
大小,
dwUsedSize 说明了有用信息所占有的大小。 dwOptions 定义了使用何种通知消息机制,
这个字段可以使用以下标志:

LINEINITIALIZEEXOPTION_USECOMPLETIONPORT    使用完备端口事件通知

LINEINITIALIZEEXOPTION_USEEVENT  使用事件通知机

LINEINITIALIZEEXOPTION_USEHIDDENWINDOW  使用隐藏窗口 事件通知机制。

 

使用 lineInitialize初始化线路的代码如下:

DWORD InitializeTAPI ()
{


    HLINEAPP         g_hLineApp; (这个是全局变量)

    HINSTANCE     g_hDialCallBackInst = NULL;  // Local copy of hInstance
   
    DWORD dwReturn = lineInitialize(&g_hLineApp,g_hDialCallBackInst,(LINECALLBACK) lineCallbackFunc,
        NULL,&g_dwNumDevs);

   /*

   使用这个函数可以让我获取应用程序 的TAPI句柄,以及线路设备的个数。其中有一个是Cellular Line

  */

   switch(dwReturn)
    {
    case LINEERR_INVALAPPNAME:
        MessageBox(NULL,_T("Invalid application name."),_T("Error"),MB_OK);
        break;
    case LINEERR_OPERATIONFAILED:
        MessageBox(NULL,_T("The operation failed."),_T("Error"),MB_OK);
        break;
    case LINEERR_INIFILECORRUPT:   
        MessageBox(NULL,_T("The INI file is corrupted."),_T("Error"),MB_OK);
        break;
    case LINEERR_RESOURCEUNAVAIL:   
        MessageBox(NULL,_T("The resource is unavailable."),_T("Error"),MB_OK);
        break;
    case LINEERR_INVALPOINTER:   
        MessageBox(NULL,_T("Invalid pointer."),_T("Error"),MB_OK);
        break;
    case LINEERR_REINIT:       
        MessageBox(NULL,_T("The application attempted to initialize TAPI twice."),_T("Error"),MB_OK);
        break;
    case LINEERR_NODRIVER:
        MessageBox(NULL,_T("No driver was found."),_T("Error"),MB_OK);
        break;
    case LINEERR_NODEVICE:
        MessageBox(NULL,_T("No device was found."),_T("Error"),MB_OK);
        break;
    case LINEERR_NOMEM:
        MessageBox(NULL,_T("No memory is available."),_T("Error"),MB_OK);
        break;
    case LINEERR_NOMULTIPLEINSTANCE:
        MessageBox(NULL,_T("Multiple instances were not found."),_T("Error"),MB_OK);
        break;
    default:
        break;       
    }
     /*  其他处理…… */
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值