亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tapiphonedlg.cpp

?? 用VC++編的電話自動(dòng)應(yīng)答系統(tǒng),由系統(tǒng)自動(dòng)處理用戶的呼叫,通過語(yǔ)音給出用戶的各種操作提示,并根據(jù)用戶的操作來執(zhí)行相應(yīng)的命令
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
			{
				//
				// 如果沒有 owner 權(quán)限,乎略這次撥入
				//
				pCall->Release();

				//
				// 注意:我們?cè)?CTAPIEventNotification::Event() 中調(diào)用了 AddRef()
				//
				pEvent->Release(); 
				return S_OK;
			}

			//
			//用來獲得乎叫方信息, 用于來電顯示
			//
			BSTR bstrCallerName,	bstrCallerNum;
			BSTR bstrCallidName,	bstrCallidNum;
			BSTR bstrConnectName,	bstrConnectNum;

			CString strCallerName,	strCallerNum;
			CString strCallidName,	strCallidNum;
			CString strConnectName,	strConnectNum;
			 
			//The name of the caller. 
			pCall->get_CallInfoString(CIS_CALLERIDNAME, &bstrCallerName);
			strCallerName = bstrCallerName;
			 
			//The number of the caller. 
			pCall->get_CallInfoString(CIS_CALLERIDNUMBER, &bstrCallerNum);
			strCallerNum = bstrCallerNum;
			 
			//The name of the called location. 
			pCall->get_CallInfoString(CIS_CALLEDIDNAME, &bstrCallidName);
			strCallidName = bstrCallidName;
			 
			//The number of the called location. 
			pCall->get_CallInfoString(CIS_CALLEDIDNUMBER, &bstrCallidNum);
			strCallidNum = strCallidNum;
			 
			//The name of the connected location. 
			pCall->get_CallInfoString(CIS_CONNECTEDIDNAME, &bstrConnectName);
			strConnectName = bstrConnectName;
			 
			//The number of the connected location. 
			pCall->get_CallInfoString(CIS_CONNECTEDIDNUMBER, &bstrConnectNum);
			strConnectNum = bstrConnectNum;

			if( strCallidNum.IsEmpty() )
				m_valCallerNum = "呼叫方號(hào)碼: 無法獲得";
			else
				m_valCallerNum = "呼叫方號(hào)碼: " + strCallidNum;
			UpdateData(FALSE);

			//
			// 獲得 ITBasicCallControl 接口并把它保存在成員變量 ppCall 中
			//
			ITBasicCallControl * ppCall;

			hr = pCall->QueryInterface( IID_ITBasicCallControl,
										(void**)&ppCall );
			m_Tapi.m_pCall = ppCall;

			pCall->Release();
	                
			if ( SUCCEEDED(hr) )
			{
				//
				// 更新 UI
				//
				m_btPickup.EnableWindow();
				m_btDisconnect.EnableWindow();
	            SetStatusMessage("有電話呼入...");
			}//end if
		}
    }//end if
	return S_OK;
}//end function

/////////////////////////////////////////////////////////////////////////////////////
// DoCallState 
//
// 功能:處理 TE_STATE 事件,有某種狀態(tài)改變時(shí)觸發(fā)此事件,比如只有狀態(tài)為 CS_OFFERING 
// 時(shí)才可以應(yīng)答
/////////////////////////////////////////////////////////////////////////////////////
HRESULT CtapiPhoneDlg::DoCallState(IDispatch* pEvent)
{
	HRESULT				hr;
    CALL_STATE			cs;
    ITCallStateEvent *	pCallStateEvent;

    //
	// 獲得接口 
	//
    hr = pEvent->QueryInterface( IID_ITCallStateEvent, (void **)&pCallStateEvent );

    if ( FAILED(hr) )
    {
        return E_FAIL;
    }

	//
	// 檢測(cè)是否是同一個(gè) Call - 如果不是,不處理這個(gè)事件
	//
	if(false == m_Tapi.SameCall(pCallStateEvent))
	{
		pCallStateEvent->Release();
		return hr;
	}

	//
    // 通過 ITCallStateEvent 獲得當(dāng)前狀態(tài)
	//
    hr = pCallStateEvent->get_State( &cs );

    //
	// 釋放接口
	//
    pCallStateEvent->Release();

    if ( FAILED(hr) )
    {
        return E_FAIL;
    }

    //
	// 如果當(dāng)前狀態(tài)是 offering,則應(yīng)答電話,同時(shí)更新 UI
	//
    if (CS_OFFERING == cs)
    {
        if (m_AutoAnswer)	//如果選種自動(dòng)應(yīng)答
        {
			OnBnClickedBtnPickup();
        }
        else				//選擇手動(dòng)應(yīng)答
        {
            SetStatusMessage("請(qǐng)點(diǎn)擊接聽按鈕接聽電話");
        }
	}
    else if (CS_DISCONNECTED == cs)
    {
		OnBnClickedBtnDisconnect();
		m_Tapi.ReleaseTheCall();
    }
    else if (CS_CONNECTED == cs)
    {
		//
        // 不作處理
		//
    }
    return S_OK;
}

/////////////////////////////////////////////////////////////////////////////////////
// DoCallMedia
//
// 功能:處理 TE_MEDIA 事件,TE_CALLMEDIA 觸發(fā) Media 事件,對(duì)應(yīng)接口:ITCallMediaEvent
/////////////////////////////////////////////////////////////////////////////////////
HRESULT CtapiPhoneDlg::DoCallMedia(
					IN IDispatch * pEvent)
{

    CALL_MEDIA_EVENT    cme = CME_STREAM_INACTIVE;
    ITCallMediaEvent  * pCallMediaEvent = NULL;

	//
	// 檢測(cè)當(dāng)前 Call 是否有效
	//
	if(NULL == m_Tapi.m_pCall)
	{
		return E_UNEXPECTED;
	}

    //
	// 獲得接口
	//
    HRESULT hr = pEvent->QueryInterface( IID_ITCallMediaEvent, (void **)&pCallMediaEvent );
	if(FAILED(hr))
	{
        MessageBox("ITCallMediaEvent, 獲取接口失敗!");
		return hr;
	}

    //
	// 獲得我們檢測(cè)到的 MediaEvent 具體類型
	//
    hr = pCallMediaEvent->get_Event( &cme );
	if(FAILED(hr))
	{
		pCallMediaEvent->Release();
		MessageBox("ITCallMediaEvent, but failed to get_Event");
		return hr;
	}

    switch ( cme ) 
    {
		// 
		// 這是我們需要處理的唯一的事件
		//
        case CME_STREAM_ACTIVE:    
        {
            //
            // 獲得當(dāng)前活動(dòng)的終端
            //    
            ITTerminal * pTerminal = NULL;
            hr = m_Tapi.GetTerminalFromStreamEvent(pCallMediaEvent, &pTerminal);

            if ( FAILED(hr) )  
			{
				MessageBox("ITCallMediaEvent: GetTerminalFromStreamEvent failed");
				m_Tapi.m_pCall->Disconnect(DC_NORMAL);
				break; 
			}

            //
            // 根據(jù)終端的方向進(jìn)行處理
            //
            TERMINAL_DIRECTION td;
            hr = pTerminal->get_Direction( &td);
			//
			// 釋放接口
			//
            pTerminal->Release(); 

            if ( FAILED(hr) ) 
            { 
	            MessageBox("ITCallMediaEvent: get_Direction failed");
				m_Tapi.m_pCall->Disconnect(DC_NORMAL);
                break; 
            }

			//
			// 方向是 TD_CAPTURE:播放聲音文件
			//
            if ( TD_CAPTURE == td && NULL != m_Tapi.m_pPlayFileTerm) 
            {
				ITMediaControl* pITMC = NULL;
				
				hr = m_Tapi.m_pPlayFileTerm->QueryInterface(IID_ITMediaControl, (void**)&pITMC);
				//
				// 獲得 ITMediaControl,開始發(fā)送媒體流
				//
				if(FAILED(hr))
				{
					MessageBox("ITCallMediaEvent: m_pPlayFileTerm QI for ITMediaControl failed");
					m_Tapi.m_pCall->Disconnect(DC_NORMAL);
					break;
				}
				//
				// 開始發(fā)送
				//
				hr = pITMC->Start();
				
				pITMC->Release();
				if(SUCCEEDED(hr))
				{
					SetStatusMessage("正在播放音頻文件... ");
				}
				else
				{
		            MessageBox("ITCallMediaEvent: ITMediaControl::Start() failed");
					m_Tapi.m_pCall->Disconnect(DC_NORMAL);
				}
			}
        
            break;
        }
    
        default:
            break;
    }

    //
	// 釋放接口
	//
    pCallMediaEvent->Release();

	return hr;
}

///////////////////////////////////////////////////////////////////
// DoFileEvent
//
//
// TE_FILETERMINAL 文件終端事件.  pEvent: ITFileTerminalEvent
// 說明:只有 WinXP 下才支持
///////////////////////////////////////////////////////////////////
HRESULT CtapiPhoneDlg::DoFileEvent(
				IN IDispatch * pEvent)
{
			
	//
	// 檢測(cè)當(dāng)前 Call 是否有效
	//
	if(NULL == m_Tapi.m_pCall)
	{
		return E_UNEXPECTED;
	}

	ITFileTerminalEvent* pITFTEvent = NULL;
	HRESULT hr = pEvent->QueryInterface( IID_ITFileTerminalEvent,
									 reinterpret_cast<void **>(&pITFTEvent) );

	if (FAILED(hr))
	{
		//
		// 致命錯(cuò)誤 - 無法繼續(xù)下去 - 切斷此次通話
		//
        MessageBox("ITFileTerminalEvent, 獲得接口失敗!");
		m_Tapi.m_pCall->Disconnect(DC_NORMAL);
		return hr;
	}

	//
	// 獲得狀態(tài) - ???????因?yàn)槲覀円_保聲音文件未被其它程序使用
	//
	TERMINAL_MEDIA_STATE ftState = TMS_ACTIVE;
	hr = pITFTEvent->get_State(&ftState);
	if(FAILED(hr))
	{
		//
		// 致命錯(cuò)誤 - 無法繼續(xù)下去 - 切斷此次通話
		//
		pITFTEvent->Release();
        MessageBox("ITFileTerminalEvent, but failed to get_State");
		m_Tapi.m_pCall->Disconnect(DC_NORMAL);
		return hr;
	}

	//
	// 我們對(duì) TMS_IDLE 感興趣,因?yàn)槲覀円V共シ?	//
	if(ftState != TMS_IDLE)
	{
		pITFTEvent->Release();
		return hr;
	}
	//
	// 獲得終端
	//
	ITTerminal *pTerminal = NULL;
	hr = pITFTEvent->get_Terminal(&pTerminal);
	//
	// 不再需要這個(gè)接口
	//
	pITFTEvent->Release();

	if(FAILED(hr))
	{
		//
		// 致命錯(cuò)誤 - 無法繼續(xù)下去 - 切斷此次通話
		//
        MessageBox("ITFileTerminalEvent, but failed to get_Terminal");
		m_Tapi.m_pCall->Disconnect(DC_NORMAL);
		return hr;
	}

    TERMINAL_DIRECTION td;
    hr = pTerminal->get_Direction( &td);
    pTerminal->Release(); 
	if(FAILED(hr))
	{
		//
		// 致命錯(cuò)誤 - 無法繼續(xù)下去 - 切斷此次通話
		//
        MessageBox("ITFileTerminalEvent, but failed to get_Direction");
		m_Tapi.m_pCall->Disconnect(DC_NORMAL);
		return hr;
	}
	if((td == TD_CAPTURE) && (NULL != m_Tapi.m_pPlayFileTerm))
	{
		SetStatusMessage("通話中...");
		//
		// unselect playback - 因?yàn)椴シ乓呀?jīng)完成
		//
		ITBasicCallControl2 *pITBCC2 = NULL;
		hr = m_Tapi.m_pCall->QueryInterface(IID_ITBasicCallControl2, (void**)&pITBCC2);
		if(FAILED(hr))
		{
			//
			// 致命錯(cuò)誤 - 無法繼續(xù)下去 - 切斷此次通話
			//
	        MessageBox("ITFileTerminalEvent, but failed to QI for ITBasicCallControl2");
			m_Tapi.m_pCall->Disconnect(DC_NORMAL);
			return hr;
		}
		//
		// 使用 ITBasicCallControl2 方法 - 要比列舉媒體流、終端容易的多
		//
		hr = pITBCC2->UnselectTerminalOnCall( m_Tapi.m_pPlayFileTerm);
		m_Tapi.m_pPlayFileTerm->Release();
		m_Tapi.m_pPlayFileTerm = NULL;
		pITBCC2->Release();
		if(FAILED(hr))
		{
			//
			// 致命錯(cuò)誤 - 無法繼續(xù)下去 - 切斷此次通話
			//
	        MessageBox("ITFileTerminalEvent, but failed to ITBasicCallControl2::UnselectTerminalOnCall");
			m_Tapi.m_pCall->Disconnect(DC_NORMAL);
			return hr;
		}
	}
	return hr;
}

/////////////////////////////////////////////////////////////////////////////////////
// DigitEvent
//
// 處理 TE_DIGITEVENT 事件,TE_DIGITEVENT 時(shí)觸發(fā),對(duì)應(yīng)接口 ITDigitDetectionEvent
/////////////////////////////////////////////////////////////////////////////////////
HRESULT CtapiPhoneDlg::DoDigitEvent(IN IDispatch* pEvent)
{
	ITDigitDetectionEvent* pDigitEvent;

	//
	// 獲得接口
	//
	pEvent->QueryInterface(IID_ITDigitDetectionEvent, (void**)&pDigitEvent);

	unsigned char dig;
	pDigitEvent->get_Digit(&dig);

	//
	// 跟據(jù)用戶不同按鍵選擇做出不同的回應(yīng)
	//
	switch (dig)
	{
	case '1':
		// 播放聲音1
		m_Tapi.PreparePlay(strFileName1);
		break;
	case '2':
		// 播放聲間2
		m_Tapi.PreparePlay(strFileName2);
		break;
	case '3':
		// 留言
		m_Tapi.StartRecord();
	default:
		break;
	}
	return S_OK;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产高清一区二区| 成人黄色一级视频| 日韩一级欧美一级| 男女男精品视频| 欧美国产成人精品| 成人av电影观看| 久久精品国产**网站演员| 国产精品女上位| 91精品国产美女浴室洗澡无遮挡| 久久99国产精品久久99 | 免费观看在线综合| 亚洲欧美欧美一区二区三区| 99re在线视频这里只有精品| 麻豆精品一区二区综合av| 中文字幕在线不卡一区| 在线成人免费观看| 91麻豆精品一区二区三区| 日韩av一二三| 亚洲电影在线免费观看| 中文字幕一区二区三区不卡| 不卡一区在线观看| 国产综合色产在线精品| 一区二区三区日韩在线观看| 国产精品美女久久久久av爽李琼| 日韩欧美一级二级三级| 欧洲国产伦久久久久久久| 成人福利视频在线| 国产伦精一区二区三区| 日本不卡视频在线观看| 五月天一区二区| 玉米视频成人免费看| 精品美女一区二区| 精品免费国产一区二区三区四区| 欧美日韩国产首页| 欧美区视频在线观看| 欧美日本韩国一区二区三区视频| 亚洲一区二区三区精品在线| 一区二区在线看| 1区2区3区国产精品| 国产日韩欧美一区二区三区综合| 欧美精品一区二区三区高清aⅴ| 91精品久久久久久久91蜜桃 | 色综合久久中文综合久久牛| 国产在线精品一区二区夜色| 国产精品网站在线| 国产精品护士白丝一区av| 中文字幕字幕中文在线中不卡视频| 久久夜色精品一区| 精品少妇一区二区三区在线播放| 日韩精品在线网站| 久久精品人人做人人爽人人| 国产欧美日韩精品一区| 久久精品视频免费观看| 国产视频在线观看一区二区三区 | 欧美午夜视频网站| 欧美精三区欧美精三区| 欧美电视剧在线看免费| 国产欧美日韩激情| 精品日韩在线观看| 国产日韩欧美麻豆| 亚洲国产精品久久久久婷婷884| 日本欧美一区二区在线观看| 九九国产精品视频| 成人h精品动漫一区二区三区| 99免费精品在线观看| 色综合色狠狠综合色| 国产毛片精品视频| 色婷婷一区二区三区四区| 欧美日韩国产综合一区二区三区| 日韩美女天天操| 国产目拍亚洲精品99久久精品| 国产精品久久看| 午夜欧美2019年伦理| 精品一区二区在线播放| 五月激情综合网| 成人激情综合网站| 884aa四虎影成人精品一区| 中文在线一区二区| 中文字幕在线观看一区| 日本不卡高清视频| 一本久久a久久免费精品不卡| 91精品国产色综合久久| 777午夜精品免费视频| 国产喂奶挤奶一区二区三区| 亚洲第一福利视频在线| 亚洲成a人v欧美综合天堂 | 日本麻豆一区二区三区视频| 日本二三区不卡| 午夜视频一区在线观看| 91精品一区二区三区久久久久久 | 精品国产免费视频| 国产麻豆日韩欧美久久| 国产欧美日韩另类一区| 色婷婷久久久久swag精品| 亚洲国产一二三| 欧美一区二区视频在线观看2020 | 99精品久久久久久| 亚洲一区二区视频在线观看| 欧美日韩免费在线视频| 热久久免费视频| 国产亚洲精品超碰| 欧美视频在线播放| 午夜精品福利一区二区蜜股av| 777xxx欧美| 成人高清视频在线| 亚洲高清免费在线| 久久综合狠狠综合久久激情| 国产白丝网站精品污在线入口 | 大胆欧美人体老妇| 亚洲国产精品久久久男人的天堂 | 日韩主播视频在线| 国产欧美精品区一区二区三区 | 日日夜夜精品视频天天综合网| 3atv在线一区二区三区| 国产精品一卡二卡在线观看| 亚洲天堂av一区| 欧美日韩国产免费一区二区| 日本成人在线不卡视频| 日本一区二区三区久久久久久久久不 | 一区精品在线播放| 欧美日本一区二区在线观看| 岛国精品一区二区| 同产精品九九九| 国产精品三级av| 欧美一级夜夜爽| 91美女视频网站| 日本不卡123| 亚洲成人av免费| 亚洲欧美影音先锋| 久久久久久综合| 91精品国产一区二区人妖| 色欧美乱欧美15图片| 国产福利91精品一区二区三区| 一区二区高清视频在线观看| 久久精品日产第一区二区三区高清版| 欧美日韩亚洲国产综合| 99久久精品国产麻豆演员表| 国产一区欧美一区| 理论片日本一区| 喷白浆一区二区| 亚洲国产一区二区视频| 亚洲男人的天堂在线aⅴ视频| 337p粉嫩大胆噜噜噜噜噜91av| 911国产精品| 欧美日韩一区中文字幕| 欧美综合一区二区三区| 色综合视频一区二区三区高清| 国产91精品在线观看| 国产乱理伦片在线观看夜一区| 日本aⅴ亚洲精品中文乱码| 天天操天天色综合| 五月开心婷婷久久| 日本少妇一区二区| 秋霞午夜av一区二区三区| 日韩电影在线看| 日韩制服丝袜先锋影音| 奇米色一区二区| 国产制服丝袜一区| 国产成人自拍高清视频在线免费播放| 蜜桃在线一区二区三区| 日本中文字幕一区二区有限公司| 亚洲另类春色国产| 亚洲一区国产视频| 午夜视频一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 日本美女一区二区| 久久99精品视频| 天天做天天摸天天爽国产一区| 亚洲777理论| 美女视频一区在线观看| 韩国精品免费视频| 春色校园综合激情亚洲| 97久久精品人人做人人爽| 成人免费视频网站在线观看| 国产精品影视在线| 一本一本久久a久久精品综合麻豆| 91性感美女视频| 91精品在线免费| 日韩精品中文字幕一区二区三区 | 国产在线精品一区二区夜色| 成人精品高清在线| 在线不卡a资源高清| 久久只精品国产| 亚洲三级电影网站| 久久精品久久99精品久久| 国产91在线观看丝袜| 色综合 综合色| 538在线一区二区精品国产| 久久久久久一二三区| 一区二区三区精品在线观看| 美女一区二区三区在线观看| 国产91精品在线观看| 欧美在线观看一区| 日韩精品影音先锋| 一区二区久久久久久| 国产精品自拍av| 337p亚洲精品色噜噜噜| 综合激情网...| 国产在线播放一区| 欧美日韩国产三级|