⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vcsampledlg.cpp

📁 VaxSIPUserAgentSDK
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}

void CVCSampleDlg::OnButton4() 
{
	UpdateData();
	
	m_sPhoneNumber += "4";
	m_pVaxVoIP->DigitDTMF(GetLineListSelectedItem(), "4");
	
	UpdateData(FALSE);
}

void CVCSampleDlg::OnButton5() 
{
	UpdateData();
	
	m_sPhoneNumber += "5";
	m_pVaxVoIP->DigitDTMF(GetLineListSelectedItem(), "5");
	
	UpdateData(FALSE);
}

void CVCSampleDlg::OnButton6() 
{
	UpdateData();
	
	m_sPhoneNumber += "6";
	m_pVaxVoIP->DigitDTMF(GetLineListSelectedItem(), "6");
	
	UpdateData(FALSE);
}

void CVCSampleDlg::OnButton7() 
{
	UpdateData();
	
	m_sPhoneNumber += "7";
	m_pVaxVoIP->DigitDTMF(GetLineListSelectedItem(), "7");
	
	UpdateData(FALSE);
}

void CVCSampleDlg::OnButton8() 
{
	UpdateData();
	
	m_sPhoneNumber += "8";
	m_pVaxVoIP->DigitDTMF(GetLineListSelectedItem(), "8");
	
	UpdateData(FALSE);
}

void CVCSampleDlg::OnButton9() 
{
	UpdateData();
	
	m_sPhoneNumber += "9";
	m_pVaxVoIP->DigitDTMF(GetLineListSelectedItem(), "9");
	
	UpdateData(FALSE);
}

void CVCSampleDlg::OnButton11() 
{
	UpdateData();
	
	m_sPhoneNumber += "0";
	m_pVaxVoIP->DigitDTMF(GetLineListSelectedItem(), "0");
	
	UpdateData(FALSE);
}

void CVCSampleDlg::OnButton10() 
{
	m_pVaxVoIP->DigitDTMF(GetLineListSelectedItem(), "*");
}


void CVCSampleDlg::OnButton12() 
{
	m_pVaxVoIP->DigitDTMF(GetLineListSelectedItem(), "#");
}

void CVCSampleDlg::OnCheckSpkMute() 
{
	UpdateData();
	m_pVaxVoIP->MuteSpk(m_bSpkMute);
}

void CVCSampleDlg::OnCheckMicMute() 
{
	UpdateData();
	m_pVaxVoIP->MuteMic(m_bMicMute);
}

void CVCSampleDlg::OnButtonResetRecording() 
{
	int nLineNo = GetLineListSelectedItem();
	
	m_pVaxVoIP->ResetRecording(nLineNo);
}

void CVCSampleDlg::OnButtonSaveToWaveFile() 
{
	UpdateData();
	
	int nLineNo = GetLineListSelectedItem();

	if(!m_pVaxVoIP->SaveRecordingToWaveFile(nLineNo, m_sWavFile))
	{
		m_pVaxVoIP->ErrorMessage();
	}
	else
	{
		MessageBox("Saved successfully.", "VaxVoIP SIP SDK", MB_ICONINFORMATION|MB_OK);
	}
}

void CVCSampleDlg::OnCheckStartRecording() 
{
	UpdateData();

	int nLineNo = GetLineListSelectedItem();
		
	if(m_bStartRecording)
		m_pVaxVoIP->StartRecording(nLineNo, 2, TRUE);
	else
		m_pVaxVoIP->StopRecording(nLineNo);
}

void CVCSampleDlg::OnCheckEcho() 
{
	UpdateData();
	
	if(m_bEnableEchoNoiseCancel)
		m_pVaxVoIP->EnableEchoNoiseCancellation();
	else
		m_pVaxVoIP->DisableEchoNoiseCancellation();
}


void CVCSampleDlg::OnCheckMicBoost() 
{
	UpdateData();
	
	if(m_bEnableMicBoost)
		m_pVaxVoIP->EnableMicBoost();
	else
		m_pVaxVoIP->DisableMicBoost();
}


void CVCSampleDlg::OnCheckDonotDisturb() 
{
	UpdateData();
	
	if(m_bDonotDisturb)
		m_pVaxVoIP->EnableDonotDisturb();
	else
		m_pVaxVoIP->DisableDonotDisturb();	
}


void CVCSampleDlg::OnCheckGsm610() 
{
	/**** Codec No 0 represents GSM 6.10 *****/
	
	UpdateData();
	
	if(m_bGSM610)
		m_pVaxVoIP->SelectVoiceCodec(0);
	else
		m_pVaxVoIP->DeselectVoiceCodec(0);	
}

void CVCSampleDlg::OnCheckiLBC() 
{
	/**** Codec No 1 represents iLBC ********/
	
	UpdateData();
	
	if(m_biLBC)
		m_pVaxVoIP->SelectVoiceCodec(1);
	else
		m_pVaxVoIP->DeselectVoiceCodec(1);
	
}

void CVCSampleDlg::OnCheckG711ALaw() 
{
	/**** Codec No 2 represents GSM711 A-Law *****/
	
	UpdateData();
		
	if(m_bG711ALaw)
		m_pVaxVoIP->SelectVoiceCodec(2);
	else
		m_pVaxVoIP->DeselectVoiceCodec(2);

}

void CVCSampleDlg::OnCheckG711ULaw() 
{
	/**** Codec No 3 represents GSM711 U-Law *****/
	
	UpdateData();
		
	if(m_bG711ULaw)
		m_pVaxVoIP->SelectVoiceCodec(3);
	else
		m_pVaxVoIP->DeselectVoiceCodec(3);
}

void CVCSampleDlg::OnButtonHelp() 
{
	CHelpDlg HelpDlg;
	HelpDlg.DoModal();
}


void CVCSampleDlg::OnButtonTransferCall() 
{
	UpdateData();

	CString sToURI = "sip:" + m_sTransferPhoneNo + "@" + m_sProxyURI;
	
	int nLineNo = GetLineListSelectedItem();
	
	if(!m_pVaxVoIP->TransferCall(nLineNo, sToURI))
	{
		m_pVaxVoIP->ErrorMessage();
	}
}

void CVCSampleDlg::OnCheckAgc() 
{
	UpdateData();
	
	if(m_bEnableAGC)
	{
		m_pVaxVoIP->EnableAGC(8000);
	}
	else
	{
		m_pVaxVoIP->DisableAGC();
	}
}


void CVCSampleDlg::OnButtonOpenWave() 
{
	UpdateData();

	int nLineNo = GetLineListSelectedItem();
	
	if(!m_pVaxVoIP->PlayWaveOpen(nLineNo, m_sPlayWaveFileName))
	{
		m_pVaxVoIP->ErrorMessage();
	}
}

void CVCSampleDlg::OnButtonWavePlay() 
{
	UpdateData();
	
	int nLineNo = GetLineListSelectedItem();
	
	if(!m_pVaxVoIP->PlayWaveStart(nLineNo, m_bPlayListen))
	{
		m_pVaxVoIP->ErrorMessage();
	}
}

void CVCSampleDlg::OnButtonWaveRewind() 
{
	int nLineNo = GetLineListSelectedItem();
	
	int nPlayPos = m_pVaxVoIP->PlayWavePosition(nLineNo);

	if(nPlayPos == -1)
	{
		m_pVaxVoIP->ErrorMessage();
		return;
	}

	if(!m_pVaxVoIP->PlayWaveSkipTo(nLineNo, nPlayPos - 3))
	{
		m_pVaxVoIP->ErrorMessage();
	}
}

void CVCSampleDlg::OnButtonWaveForward() 
{
	int nLineNo = GetLineListSelectedItem();
	
	int nPlayPos = m_pVaxVoIP->PlayWavePosition(nLineNo);

	if(nPlayPos == -1)
	{
		m_pVaxVoIP->ErrorMessage();
		return;
	}
	
	if(!m_pVaxVoIP->PlayWaveSkipTo(nLineNo, nPlayPos + 3))
	{
		m_pVaxVoIP->ErrorMessage();
	}
	
}

void CVCSampleDlg::OnButtonWavePause() 
{
	int nLineNo = GetLineListSelectedItem();
	
	if(!m_pVaxVoIP->PlayWavePause(nLineNo))
	{
		m_pVaxVoIP->ErrorMessage();
	}
}

void CVCSampleDlg::OnButtonWaveStop() 
{
	int nLineNo = GetLineListSelectedItem();
	
	if(!m_pVaxVoIP->PlayWaveStop(nLineNo))
	{
		m_pVaxVoIP->ErrorMessage();
	}
}

CString CVCSampleDlg::GetSelectedItemCallId()
{
	
	int nSelectedItemIndex = m_ctrlIncomingCallListBox.GetCurSel();
	if(nSelectedItemIndex == -1) return "";

	CString sCallId = "";
	
	m_ctrlIncomingCalIIdListBox.GetText(nSelectedItemIndex, sCallId);

	return sCallId;
}

void CVCSampleDlg::OnTimer(UINT nIDEvent) 
{
	if(nIDEvent == GENERAL_TIMER_ID)
	{
		UpdateLineStatus();
	}
	else if(nIDEvent == VOL_LEVEL_TIMER_ID)
	{
		m_ctrlSpkProg.SetPos(m_pVaxVoIP->GetSpkSoundLevel());
		m_ctrlMicProg.SetPos(m_pVaxVoIP->GetMicSoundLevel());
	}
	
	CDialog::OnTimer(nIDEvent);
}


int CVCSampleDlg::GetLineListSelectedItem()
{
	POSITION pos = m_ctrlLineList.GetFirstSelectedItemPosition();
	if(pos == NULL) return -1;

	return m_ctrlLineList.GetNextSelectedItem(pos);
}

int CVCSampleDlg::FindLine()
{
	int nLineNo = GetLineListSelectedItem();
	if(nLineNo == -1)	return -1;

	if(!m_pVaxVoIP->IsLineBusy(nLineNo)) return nLineNo;

	for(nLineNo = 0; nLineNo < TOTAL_NO_LINES; nLineNo++)
	{
		if(!m_pVaxVoIP->IsLineBusy(nLineNo)) return nLineNo;
	}

	return -1;
}

void CVCSampleDlg::UpdateLineList(int nLineNo)
{
	if(m_ctrlCheckStartConf.GetCheck() == BST_CHECKED)
	{
		for(int nLineCount = 0; nLineCount < TOTAL_NO_LINES; nLineCount++)
		{
			if(m_pVaxVoIP->IsLineHold(nLineCount))
				m_pVaxVoIP->UnHoldLine(nLineCount);
		}
	}
		
	else
	{
		for(int nLineCount = 0; nLineCount < TOTAL_NO_LINES; nLineCount++)
		{
			if(nLineCount == nLineNo) continue;
		
			if(m_pVaxVoIP->IsLineBusy(nLineCount) == TRUE && m_pVaxVoIP->IsLineHold(nLineCount) == FALSE) 
			{
				m_pVaxVoIP->HoldLine(nLineCount);
			}
		}
	
		if(m_pVaxVoIP->IsLineHold(nLineNo))
			m_pVaxVoIP->UnHoldLine(nLineNo);
	}
}	

void CVCSampleDlg::UpdateLineStatus()
{
	int nLineNo = 0;
	
	if(m_ctrlLineList.GetItemCount() == 0)
	{
		for(nLineNo = 0; nLineNo < TOTAL_NO_LINES; nLineNo++)
		{
			CString sString = "";
			sString.Format("Line-%d  :  FREE                ", nLineNo + 1);
		
			m_ctrlLineList.InsertItem(nLineNo, sString);
		}

		m_ctrlLineList.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED);
	}

	nLineNo = GetLineListSelectedItem();
	UpdateLineList(nLineNo);
						
	if((m_ctrlCheckStartRecord.GetCheck() == BST_CHECKED) != m_pVaxVoIP->IsRecording(nLineNo))
	{
		if(m_pVaxVoIP->IsRecording(nLineNo))
			m_ctrlCheckStartRecord.SetCheck(BST_CHECKED);
		else m_ctrlCheckStartRecord.SetCheck(BST_UNCHECKED);
	}

	for(int nItemNo = 0; nItemNo < m_ctrlLineList.GetItemCount(); nItemNo++)
	{
		CString sItemStatus = "";
		sItemStatus.Format("Line-%d  :  ", nItemNo + 1);
	
		CString sItemText = m_ctrlLineList.GetItemText(nItemNo, 0);

		if(!m_pVaxVoIP->IsLineOpen(nItemNo))
		{
			if(sItemText.Find("CLOSE") == -1)
			{						
				m_ctrlLineList.SetItemText(nItemNo, 0, sItemStatus + "CLOSE" + LIST_ITEM_POST_FIX);
			}
		}
		else if(m_pVaxVoIP->IsLineBusy(nItemNo))
		{
			if(m_pVaxVoIP->IsWaveFilePlaying(nItemNo))
			{
				if(sItemText.Find("PLAYING") == -1)
				{							
					m_ctrlLineList.SetItemText(nItemNo, 0, sItemStatus + "PLAYING" + LIST_ITEM_POST_FIX);
				}
			}
			else if(m_pVaxVoIP->IsLineHold(nItemNo))
			{
				if(sItemText.Find("HOLD") == -1)
				{							
					m_ctrlLineList.SetItemText(nItemNo, 0, sItemStatus + "HOLD" + LIST_ITEM_POST_FIX);
				}
			}
			else
			{
				if(sItemText.Find("BUSY") == -1 && sItemText.Find("CONNECTING") == -1)
				{							
					m_ctrlLineList.SetItemText(nItemNo, 0, sItemStatus + "BUSY" + LIST_ITEM_POST_FIX);
				}
			}
		}
		else
		{
			if(sItemText.Find("FREE") == -1)
			{							
				m_ctrlLineList.SetItemText(nItemNo, 0, sItemStatus + "FREE" + LIST_ITEM_POST_FIX);
			}
		}
	}
}

void CVCSampleDlg::OnSuccessToConnect(int nLineNo)
{
	if(nLineNo != GetLineListSelectedItem())
	{
		m_pVaxVoIP->HoldLine(nLineNo);

		CString sItemStatus = "";
		sItemStatus.Format("Line-%d  :  ", nLineNo + 1);

		m_ctrlLineList.SetItemText(nLineNo, 0, sItemStatus + "HOLD" + LIST_ITEM_POST_FIX);
	}
	else
	{
		CString sItemStatus = "";
		sItemStatus.Format("Line-%d  :  ", nLineNo + 1);
		m_ctrlLineList.SetItemText(nLineNo, 0, sItemStatus + "BUSY" + LIST_ITEM_POST_FIX);
	}
	
	int nVol = m_pVaxVoIP->GetMicVolume();
	m_MicSlider.SetPos(nVol/25);

	nVol = m_pVaxVoIP->GetSpkVolume();
	m_SpkSlider.SetPos(nVol/25);
	
	m_bEnableMicBoost = m_pVaxVoIP->IsMicBoostEnable();

	UpdateData(FALSE);
}


void CVCSampleDlg::OnIncomingCall(LPCTSTR sCallId, LPCTSTR sCLI)
{
	if(m_ctrlIncomingCalIIdListBox.FindString(-1, sCallId) != -1)
		return;
	
	m_ctrlIncomingCallListBox.AddString(sCLI);
	m_ctrlIncomingCalIIdListBox.AddString(sCallId);

	if(m_ctrlIncomingCallListBox.GetCurSel() == -1)
		m_ctrlIncomingCallListBox.SetCurSel(0);
}


void CVCSampleDlg::OnIncomingCallRingingStart(LPCTSTR sCallId)
{
	UpdateData();
	
	if(m_bPlayRingTone)
		StartTone();
}


void CVCSampleDlg::OnIncomingCallRingingStop(LPCTSTR sCallId)
{
	StopTone();
		
	int nIndex = m_ctrlIncomingCalIIdListBox.FindString(-1, sCallId);
	if(nIndex != -1)
	{
		m_ctrlIncomingCallListBox.DeleteString(nIndex);
		m_ctrlIncomingCalIIdListBox.DeleteString(nIndex);
	}

	if(m_ctrlIncomingCallListBox.GetCurSel() == -1)
		m_ctrlIncomingCallListBox.SetCurSel(0);
}


void CVCSampleDlg::OnCheckPlayRingTone() 
{
	UpdateData();
		
	if(!m_bPlayRingTone)
	{
		StopTone();
	}
}


void CVCSampleDlg::AddToStatusList(LPCTSTR sText)
{
	m_ctrlStatusLogListBox.AddString(sText);
	m_ctrlStatusLogListBox.SetTopIndex(m_ctrlStatusLogListBox.GetCount() - 1);
}


int CVCSampleDlg::GetSelectedAudioInDeviceId()
{
	return m_ctrlComboAudioOut.GetCurSel() - 1;
}

int CVCSampleDlg::GetSelectedAudioOutDeviceId()
{
	return m_ctrlComboAudioOut.GetCurSel() - 1;
}

void CVCSampleDlg::StartTone()
{
	::PlaySound(MAKEINTRESOURCE(IDR_WAVE_RING), AfxGetInstanceHandle(), SND_RESOURCE|SND_ASYNC|SND_LOOP|SND_NODEFAULT);
}

void CVCSampleDlg::StopTone()
{
	::PlaySound(NULL, AfxGetInstanceHandle(), SND_PURGE);
}


void CVCSampleDlg::OnCheckEnableConference() 
{
	int nBusyCount = 0;
	
	for(int nLineNo = 0; nLineNo < TOTAL_NO_LINES; nLineNo++)
	{
		if(m_pVaxVoIP->IsLineBusy(nLineNo))
			nBusyCount++;
	}

	if(nBusyCount < 2)
	{
		m_ctrlCheckStartConf.SetCheck(BST_UNCHECKED);
		MessageBox("Dial/receive more than one calls and then click start conference check box.", "VaxVoIP SDK", MB_ICONEXCLAMATION);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -