📄 vcsampledlg.cpp
字号:
}
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 + -