ITAutomatedPhoneControl::SelectCall 方法 (tapi3if.h)
SelectCall 方法选择 pCall 参数指向的 Call 对象上的当前电话对象。
语法
HRESULT SelectCall(
[in] ITCallInfo *pCall,
[in] VARIANT_BOOL fSelectDefaultTerminals
);
参数
[in] pCall
指向 ITCallInfo 接口的指针。
[in] fSelectDefaultTerminals
如果VARIANT_TRUE,请使用默认终端。 有关更多信息,请参见下面的“备注”部分。
返回值
如果该方法成功,则它会返回 S_OK。 否则,它将返回错误值。
注解
应用程序必须对呼叫和电话具有所有者权限,此方法才能返回成功。 如果手机尚未使用所有者权限打开,则此方法将失败。
如果 fSelectDefaultTerminals 参数设置为 VARIANT_TRUE,此方法将检索与电话关联的所有默认终端,并尝试在呼叫中选择它们。 如果其中一个终端的实例化失败,或者选择呼叫中的某个终端失败,则整个 SelectCall 方法将返回失败,并且不会在电话上选择呼叫。 如果这不是应用程序所需的行为,则应用程序应传入 fSelectDefaultTerminals 参数VARIANT_FALSE,并单独处理终端选择。
成功完成此方法后,电话对象将保留对调用对象的引用 (即在 ITCallInfo) 调用 AddRef 方法。
对于 Windows XP,一次只能选择一个电话呼叫。 未来版本的 TAPI 可能支持同时选择多个呼叫,以便与支持多个呼叫外观的电话配合使用。
请注意,可以通过两种方式取消选择呼叫: (1) 应用程序可以调用 ITAutomatedPhoneControl::UnselectCall; (2) 电话对象本身可以调用 ITAutomatedPhoneControl::UnselectCall。 有关何时发生这种情况的信息,请参阅以下列表。
此方法成功完成后,对所选调用执行以下处理:
- 当电话启动时,电话对象在尚未处于CS_DISCONNECTED呼叫状态的任何当前处理的呼叫上调用 ITBasicCallControl::D isconnect 。
- 如果所选呼叫达到CS_DISCONNECTED呼叫状态,则电话对象使用 ITAutomatedPhoneControl::UnselectCall 方法自动取消选择呼叫。
- 如果电话已关闭,则从该电话中自动取消选择任何所选呼叫。
- 当电话脱钩或选择呼叫时,如果电话处于CS_OFFERING呼叫状态,则电话对象在当前处理的呼叫上调用 ITBasicCallControl::Answer 。
- 当在CS_INPROGRESS呼叫状态中选择呼叫并且电话处于非接通状态时,或者在电话上选择的呼叫进入CS_INPROGRESS呼叫状态且电话处于 offhook状态时,电话对象调用 ITAutomatedPhoneControl::Start ( PT_RINGBACK Tone 本身 ) 。
- 当在CS_CONNECTED呼叫状态中选择呼叫时,或者在电话上选择的呼叫进入CS_CONNECTED呼叫状态时,电话对象将调用 ITAutomatedPhoneControl::StopTone 。
- 当在CS_OFFERING、CS_INPROGRESS或CS_CONNECTED呼叫状态中选择呼叫并且电话处于 onhook 状态时,电话对象调用 ITAutomatedPhoneControl::StartRinger ( 0, 0 ) 。 当已在电话上选择的呼叫进入CS_OFFERING、CS_INPROGRESS或CS_CONNECTED呼叫状态且电话处于打开状态时,也会发生这种情况。
- 如果电话处于 onhook 状态,则电话对象将调用 ITAutomatedPhoneControl::StopRinger 。
- 如果电话处于 offhook 状态,并且CS_DISCONNECTED呼叫状态事件导致等于CEC_DISCONNECT_BUSY,则电话对象调用 ITAutomatedPhoneControl::StartTone ( PT_BUSY, 0 ) 。
- 如果电话处于 offhook 状态且CS_DISCONNECTED呼叫状态事件的原因等于CEC_DISCONNECT_NORMAL,则电话对象将调用 ITAutomatedPhoneControl::StopTone。
- 如果电话处于 offhook 状态,并且CS_DISCONNECTED呼叫状态事件既没有原因CEC_DISCONNECT_BUSY也不导致CEC_DISCONNECT_NORMAL,则电话对象调用 ITAutomatedPhoneControl::StartTone ( PT_ERROR, 0 ) 。
要求
目标平台 | Windows |
标头 | tapi3if.h (包括 Tapi3.h) |
Library | Uuid.lib |
DLL | Tapi3.dll |