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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tapi3dlg.cpp

?? 基于Tapi 3.0的軟電話源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
        m_pCall = NULL;
        isRealDisc = true;
    }

    if (m_pCallInfo != NULL && pCall == m_pCallersBasicCall)
    {
		TRACE("ReleaseTheCall CallInfo (%X) --\n",(int)m_pCallInfo);
        m_pCallInfo->Release();
        m_pCallInfo = NULL;
        isRealDisc = true;
    }

    if (m_pCallOnHold != NULL && pCall == m_pCallOnHold)
    {
		TRACE("ReleaseTheCall Call (%X) --\n",(int)m_pCallOnHold);
        m_pCallOnHold->Release();
        m_pCallOnHold = NULL;
        isRealDisc = true;
    }

    if (m_pCalledOnHold != NULL && pCall == m_pCalledOnHold)
    {
		TRACE("ReleaseTheCall Call (%X) --\n",(int)m_pCalledOnHold);
        m_pCalledOnHold->Release();
        m_pCalledOnHold = NULL;
        isRealDisc = true;
    }

    if (m_pCallersBasicCall != NULL && pCall == m_pCallersBasicCall)
    {
		TRACE("ReleaseTheCall Call (%X) --\n",(int)m_pCallersBasicCall);
        m_pCallersBasicCall->Release();
        m_pCallersBasicCall = NULL;
        isRealDisc = true;
    }

/*    if (m_pTransferConsultCall != NULL && pCall == m_pTransferConsultCall)
    {
        m_pTransferConsultCall->Release();
        m_pTransferConsultCall = NULL;
        
        isRealDisc = false;
    }
*/

    if (!isRealDisc) 
        return;


    GetDlgItem(ID_CALLCONTROL_ANSWERCALL)->EnableWindow(false); 
    GetDlgItem(ID_CALLCONTROL_DROPCALL)->EnableWindow(false);     
    GetDlgItem(ID_CALLCONTROL_HOLDCALL)->EnableWindow(false);    
    GetDlgItem(ID_CALLCONTROL_UNHOLDCALL)->EnableWindow(false);    
    GetDlgItem(IDM_CALLTRANSFER)->EnableWindow(false);
    GetDlgItem(IDM_PARK_CALL)->EnableWindow(false);  
    GetDlgItem(IDM_BLIND_TRANSFER)->EnableWindow(false);
    GetDlgItem(IDM_SWAP_HOLD)->EnableWindow(false); 
}

BEGIN_MESSAGE_MAP(CTapi3Dlg, CDialog)	
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_COMMAND(IDM_EXIT, OnExit)
	ON_COMMAND(IDM_INIT_TAPI, OnInitTapi)
	ON_COMMAND(IDM_ABOUT, OnAbout)
	ON_BN_CLICKED(IDC_CLEAR, OnClear)
	ON_COMMAND(IDM_DEINIT_TAPI, OnDeinitTapi)
	ON_LBN_DBLCLK(IDC_MSGBOX, OnDblclkMsgbox)
	ON_CBN_SELCHANGE(IDC_EXTN_LIST, OnSelchangeExtnCall)
	ON_COMMAND(IDM_MAKE_CALL, OnMakeCall)
    ON_COMMAND(ID_CALLCONTROL_ANSWERCALL, OnAnswerCall)
    ON_COMMAND(ID_CALLCONTROL_HOLDCALL, OnHold) 
    ON_COMMAND(ID_CALLCONTROL_UNHOLDCALL, OnUnHold)	
    ON_COMMAND(ID_CALLCONTROL_DROPCALL, OnDropCall)	
    ON_COMMAND(IDM_PARK_CALL, OnParkCall) 
    ON_COMMAND(IDM_UNPARK_CALL, OnUnparkCall) 
    ON_COMMAND(IDM_CALLCONFERENCE, OnCallConference)
    ON_COMMAND(IDM_ADDTOCONF, OnAddToConference)
    ON_COMMAND(IDM_REMOVEFROMCONF, OnRemoveFromConference)
    ON_COMMAND(IDM_CALLTRANSFER, OnCallTransfer)  
    ON_COMMAND(IDM_BLIND_TRANSFER, OnBlindTransfer)
    ON_COMMAND(IDM_SWAP_HOLD, OnSwapHold)  
    ON_COMMAND(IDM_TRANSFER_FINISH, OnTransferFinish)
    ON_COMMAND(IDM_EXPAND, OnExpand)	
    ON_COMMAND(IDM_COLLAPSE, OnCollapse)	
	ON_MESSAGE(WM_TAPI_EVENT, OnTAPIEvent)	// My own user message for TAPI event
END_MESSAGE_MAP()

// CTapi3Dlg message handlers
BOOL CTapi3Dlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	// Intialises the OLE library
	AfxOleInit();

    GetDlgItem(IDM_MAKE_CALL)->EnableWindow(false);
    GetDlgItem(ID_CALLCONTROL_ANSWERCALL)->EnableWindow(false);
    GetDlgItem(ID_CALLCONTROL_DROPCALL)->EnableWindow(false);
    GetDlgItem(ID_CALLCONTROL_HOLDCALL)->EnableWindow(false);
    GetDlgItem(ID_CALLCONTROL_UNHOLDCALL)->EnableWindow(false);
    GetDlgItem(IDM_INIT_TAPI)->EnableWindow(true);
    GetDlgItem(IDM_DEINIT_TAPI)->EnableWindow(false);
    GetDlgItem(IDM_EXPAND)->EnableWindow(false);
    GetDlgItem(IDM_COLLAPSE)->EnableWindow(false);
    GetDlgItem(IDC_CLEAR)->EnableWindow(false);
    GetDlgItem(IDM_CALLTRANSFER)->EnableWindow(false);
    GetDlgItem(IDM_TRANSFER_FINISH)->EnableWindow(false); 
    GetDlgItem(IDM_CALLCONFERENCE)->EnableWindow(false);
    GetDlgItem(IDM_PARK_CALL)->EnableWindow(false);     
    GetDlgItem(IDM_UNPARK_CALL)->EnableWindow(false);     
    GetDlgItem(IDM_BLIND_TRANSFER)->EnableWindow(false);    
    GetDlgItem(IDM_SWAP_HOLD)->EnableWindow(false); 
    GetDlgItem(IDM_ADDTOCONF)->EnableWindow(false);
    GetDlgItem(IDM_REMOVEFROMCONF)->EnableWindow(false);        

	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CTapi3Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.
void CTapi3Dlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CTapi3Dlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CTapi3Dlg::OnCancel() 
{
	// Shutdown TAPI
	OnDeinitTapi();

	// Close the dialog
	CDialog::OnCancel();
}

void CTapi3Dlg::OnOK() 
{
	// Override OnOK to do nothing
}

void CTapi3Dlg::OnExit() 
{
	// This is same as OnCancel
	OnCancel();
}

void CTapi3Dlg::OnInitTapi() 
{
	CWaitCursor wait;

	if (!m_bTAPIInit)
	{
		// Initialise TAPI3
		if (!m_TAPI3.Init())
		{
			PRINT_INIT(-1, 0, "Failed to initialise TAPI3!");
		}
		else
		{
            GetDlgItem(IDM_DEINIT_TAPI)->EnableWindow(true);
            GetDlgItem(IDM_EXPAND)->EnableWindow(true);
            GetDlgItem(IDM_COLLAPSE)->EnableWindow(true);
            GetDlgItem(IDC_CLEAR)->EnableWindow(true);
            GetDlgItem(IDM_INIT_TAPI)->EnableWindow(false);

			m_bTAPIInit=true;
			PopulateExtnCombo();
		}
	}
}

void CTapi3Dlg::OnDeinitTapi() 
{
	// Clear TAPI objects being displayed
    OnClear();
	OnClearInit();	

	// Delete the telephonyEngine
	if (m_pTEngine != NULL) 
    {
        delete m_pTEngine;
        m_pTEngine = NULL;
    }

    // if there is still a call,
    // release it
    //
    ReleaseTheCall(NULL);

	// Deinitialise TAPI3
	if (m_bTAPIInit)
	{
		m_TAPI3.DeInit();
		m_bTAPIInit = false;
        ClearExtCombo();
        GetDlgItem(IDM_INIT_TAPI)->EnableWindow(true);
        GetDlgItem(IDM_DEINIT_TAPI)->EnableWindow(false);
        GetDlgItem(IDM_EXPAND)->EnableWindow(false);
        GetDlgItem(IDM_COLLAPSE)->EnableWindow(false);
        GetDlgItem(IDC_CLEAR)->EnableWindow(false);
        GetDlgItem(IDM_MAKE_CALL)->EnableWindow(false);
        GetDlgItem(ID_CALLCONTROL_ANSWERCALL)->EnableWindow(false);
        GetDlgItem(ID_CALLCONTROL_DROPCALL)->EnableWindow(false);
        GetDlgItem(ID_CALLCONTROL_HOLDCALL)->EnableWindow(false);
        GetDlgItem(ID_CALLCONTROL_UNHOLDCALL)->EnableWindow(false);
        GetDlgItem(IDM_CALLTRANSFER)->EnableWindow(false);
        GetDlgItem(IDM_TRANSFER_FINISH)->EnableWindow(false);
        GetDlgItem(IDM_CALLCONFERENCE)->EnableWindow(false);
        GetDlgItem(IDM_PARK_CALL)->EnableWindow(false);
        GetDlgItem(IDM_UNPARK_CALL)->EnableWindow(false); 
        GetDlgItem(IDM_BLIND_TRANSFER)->EnableWindow(false);
        GetDlgItem(IDM_SWAP_HOLD)->EnableWindow(false); 
        GetDlgItem(IDM_ADDTOCONF)->EnableWindow(false);
        GetDlgItem(IDM_REMOVEFROMCONF)->EnableWindow(false);    
	}    
}

void CTapi3Dlg::OnAbout() 
{
	// Open the about box
	CAboutDlg dlgAbout;
	dlgAbout.DoModal();
}

void CTapi3Dlg::OnTAPIEvent(WPARAM wParam, LPARAM lParam)
{
	TAPI_EVENT Type = (TAPI_EVENT)wParam;
	IDispatch *pEvent = (IDispatch*)lParam;

	int index;
	HRESULT hr;
	ITCallNotificationEvent* pCallNotificationEvent;
	
	switch(Type)
	{
	case TE_TAPIOBJECT:
		PRINT(-1, 0, "-TE_TAPIOBJECT");
		break;
	case TE_ADDRESS:
		PRINT(-1, 0, "-TE_ADDRESS");
		break;
	case TE_CALLNOTIFICATION:
	{
		// Store the event pointer into listbox
		index = PRINT(-1, 0, "+TE_CALLNOTIFICATION");
		CCallNotificationEvent* pTEvent = new CCallNotificationEvent(pEvent);
		SET_ITEM_DATA_PTR(index, pTEvent);

		hr = pEvent->QueryInterface(IID_ITCallNotificationEvent, (LPVOID*)&pCallNotificationEvent);
		if (hr == S_OK)
		{            
			HandleCallNotificationEvent(pCallNotificationEvent);
			pCallNotificationEvent->Release();
		}
		else
		{
			PRINT_INIT(-1, 0, "Failed to obtain ITCallNotificationEvent Interface, hr=%x", hr);
		}
	}
	break;
	case TE_CALLSTATE:
	{
		// Store the event pointer into listbox
		index = PRINT(-1, 0, "+TE_CALLSTATE");
		CCallStateEvent* pTEvent = new CCallStateEvent(pEvent);
		SET_ITEM_DATA_PTR(index, pTEvent);

		ITCallStateEvent* pCallStateEvent;
		hr = pEvent->QueryInterface(IID_ITCallStateEvent, (LPVOID*)&pCallStateEvent);
		if (hr == S_OK)
		{
			HandleCallStateEvent(pCallStateEvent);
			pCallStateEvent->Release();
		}
		else
		{
			PRINT_INIT(-1, 0, "Failed to obtain ITCallStateEvent Interface, hr=%x", hr);
		}
	}
	break;
	case TE_CALLMEDIA:
		PRINT(-1, 0, "-TE_CALLMEDIA");
		break;
	case TE_CALLHUB:
	{
		// Store the event pointer into listbox
		index = PRINT(-1, 0, "+TE_CALLHUB");			
		CCallHubEvent* pTEvent = new CCallHubEvent(pEvent);
		SET_ITEM_DATA_PTR(index, pTEvent);	

		ITCallHubEvent* pCallHubEvent;
		hr = pEvent->QueryInterface(IID_ITCallHubEvent, (LPVOID*)&pCallHubEvent);
		if (hr == S_OK)
		{
			//HandleCallHubEvent(pCallHubEvent);
			pCallHubEvent->Release();
		}
		else
		{
			PRINT_INIT(-1, 0, "Failed to obtain ITCallHubEvent Interface, hr=%x", hr);
		}
	}
	break;
	case TE_CALLINFOCHANGE:
	{
		index = PRINT(-1, 0, "+TE_CALLINFOCHANGE");
		CCallInfoChangeEvent* pTEvent = new CCallInfoChangeEvent(pEvent);
        
		SET_ITEM_DATA_PTR(index, pTEvent);	
	}
	break;
	case TE_PRIVATE:
		PRINT(-1, 0, "-TE_PRIVATE");
		break;
	case TE_REQUEST:
		PRINT(-1, 0, "-TE_REQUEST");
		break;
	case TE_AGENT:
		PRINT(-1, 0, "-TE_AGENT");
		break;
	case TE_AGENTSESSION:
		PRINT(-1, 0, "-TE_AGENTSESSION");
		break;
	case TE_QOSEVENT:
		PRINT(-1, 0, "-TE_QOSEVENT");
		break;
	case TE_AGENTHANDLER:
		PRINT(-1, 0, "-TE_AGENTHANDLER");
		break;
	case TE_ACDGROUP:
		PRINT(-1, 0, "-TE_ACDGROUP");
		break;
	case TE_QUEUE:
		PRINT(-1, 0, "-TE_QUEUE");
		break;
	case TE_DIGITEVENT:
		PRINT(-1, 0, "-TE_DIGITEVENT");
		break;
	case TE_GENERATEEVENT:
		PRINT(-1, 0, "-TE_GENERATEEVENT");
		break;
	default:
		PRINT(-1, 0, "-Unknown event type!");
		break;
	}

	// Done with message so release it
	pEvent->Release();
}

void CTapi3Dlg::OnDblclkMsgbox() 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人aaaa| www国产精品av| 国产91丝袜在线播放| 麻豆中文一区二区| 久久99国产精品久久| 久久aⅴ国产欧美74aaa| 久久精品国产亚洲a| 毛片av一区二区三区| 久久99精品国产91久久来源| 秋霞成人午夜伦在线观看| 婷婷一区二区三区| 日本欧美加勒比视频| 韩国av一区二区| 国产精品99久久久久久有的能看 | 99视频在线精品| 成人av片在线观看| 91国偷自产一区二区开放时间 | 国产校园另类小说区| 久久男人中文字幕资源站| 久久伊99综合婷婷久久伊| 久久午夜色播影院免费高清| 国产调教视频一区| 亚洲免费毛片网站| 三级不卡在线观看| 国产一区二区三区免费看| 成人精品免费视频| 欧美性猛交xxxxxxxx| 欧美一区日韩一区| 国产精品久久久久久久久免费相片| 自拍视频在线观看一区二区| 日韩电影在线观看一区| 久久97超碰国产精品超碰| 99久久精品国产观看| 欧美精品aⅴ在线视频| 亚洲精品在线观看视频| 亚洲精品乱码久久久久久久久| 亚洲国产日韩精品| 国产精品亚洲专一区二区三区| 91免费观看国产| 久久综合色天天久久综合图片| 中文字幕五月欧美| 美女脱光内衣内裤视频久久网站| 国产成人免费在线| 欧美美女激情18p| 久久久久国产精品人| 国产女人水真多18毛片18精品视频| 亚洲午夜久久久久久久久久久 | 亚洲一区二区三区四区在线免费观看 | 国产精品一区二区无线| 欧美日韩一区二区三区四区五区| 欧美mv和日韩mv国产网站| 一区二区三区日韩精品| 国产一区二区免费看| 91精品国产91久久久久久最新毛片 | 精品一区在线看| 99国产麻豆精品| 国产午夜精品福利| 捆绑变态av一区二区三区| 欧美影院一区二区| 亚洲欧美日韩人成在线播放| 国产高清成人在线| 欧美不卡在线视频| 香港成人在线视频| 色久综合一二码| 最新国产成人在线观看| 国产精品一区二区久久不卡| 精品国内二区三区| 久久精品国产一区二区三区免费看| 在线电影一区二区三区| 亚洲已满18点击进入久久| 91成人免费在线视频| 日韩一区中文字幕| 99精品欧美一区二区三区综合在线| 国产视频一区不卡| 国产精品自在欧美一区| 国产日韩欧美不卡在线| 国产大陆精品国产| 亚洲国产精品精华液ab| 成人免费av资源| 国产精品全国免费观看高清| 成人三级伦理片| 国产精品国产三级国产普通话三级 | 欧美日韩一区二区在线观看视频 | 欧美一级视频精品观看| 奇米888四色在线精品| 91精品久久久久久蜜臀| 奇米777欧美一区二区| 日韩欧美三级在线| 国产精品一区二区x88av| 中文字幕不卡在线| 日本久久一区二区三区| 偷拍一区二区三区| 欧美videos中文字幕| 国产精品中文字幕日韩精品| 国产精品乱码一区二区三区软件| 99久久国产综合精品麻豆| 亚洲日本青草视频在线怡红院| 91国偷自产一区二区三区成为亚洲经典| 亚洲三级电影全部在线观看高清| 欧美日韩亚洲综合在线 | 视频一区视频二区中文| 91精品国产黑色紧身裤美女| 国产一区二区三区视频在线播放| 国产农村妇女毛片精品久久麻豆 | 亚洲精品少妇30p| 777亚洲妇女| 韩国三级中文字幕hd久久精品| 国产精品毛片高清在线完整版| 欧美在线播放高清精品| 九九精品一区二区| 亚洲欧美色图小说| 日韩精品一区二区三区中文精品 | 欧美日韩国产a| 国产精品性做久久久久久| 亚洲一区在线免费观看| www成人在线观看| 色婷婷一区二区| 国产美女精品人人做人人爽| 亚洲制服丝袜在线| 欧美国产一区二区| 日韩区在线观看| 欧美最新大片在线看| 成人黄色国产精品网站大全在线免费观看| 亚洲精选免费视频| 久久精品亚洲一区二区三区浴池 | 国产日韩欧美精品电影三级在线 | 久久精品72免费观看| 一区二区欧美视频| 国产精品久久久一本精品| 日韩欧美国产三级| 欧美三级韩国三级日本三斤| av男人天堂一区| 国产激情91久久精品导航| 奇米精品一区二区三区在线观看一 | 亚洲美女偷拍久久| 久久久久久久久久看片| 欧美一级理论性理论a| 欧美影院精品一区| 色婷婷精品大在线视频| 99久久精品国产一区二区三区| 韩国女主播成人在线观看| 日韩av高清在线观看| 亚洲一区二区三区四区在线免费观看 | 7777精品伊人久久久大香线蕉经典版下载| 成人av网站在线观看| 高清久久久久久| 国产尤物一区二区在线| 裸体一区二区三区| 精品一区二区综合| 蜜臀a∨国产成人精品| 免费成人在线播放| 免费人成在线不卡| 久久精品久久精品| 久久综合综合久久综合| 日本不卡高清视频| 精品一区二区三区影院在线午夜| 久久99国产精品久久99| 精品亚洲国产成人av制服丝袜| 精品一区二区在线视频| 国产乱子伦视频一区二区三区| 国产麻豆视频一区二区| 国产福利一区二区三区视频| 成人丝袜18视频在线观看| 99riav久久精品riav| 欧美视频在线一区二区三区| 538在线一区二区精品国产| 欧美一区二区视频在线观看2020 | 国产黄色成人av| 成人午夜免费视频| 色94色欧美sute亚洲13| 欧美日韩国产综合一区二区三区| 制服丝袜亚洲精品中文字幕| 精品国产91洋老外米糕| 国产精品视频线看| 亚洲午夜视频在线| 九九**精品视频免费播放| 成人白浆超碰人人人人| 一本久久a久久精品亚洲| 欧美午夜理伦三级在线观看| 欧美一区二区福利视频| 国产清纯在线一区二区www| 中文字幕中文乱码欧美一区二区| 亚洲综合精品久久| 另类小说色综合网站| av在线播放成人| 欧美一区二区女人| 国产精品九色蝌蚪自拍| 亚洲va国产va欧美va观看| 国产乱码精品一区二区三区忘忧草 | 亚洲欧洲av在线| 青草av.久久免费一区| 99国产欧美另类久久久精品| 51精品视频一区二区三区| 中文av一区特黄| 日本aⅴ亚洲精品中文乱码| 成人精品免费看| 日韩精品专区在线影院观看| 亚洲色图欧洲色图婷婷| 国产美女精品人人做人人爽| 欧美日韩免费在线视频|