📄 pathsimview.cpp
字号:
m_TestTextCtrl2.SetWindowText( str);
#endif
//go draw the data plots
if(m_pCPlotData && ( pDoc->m_SimState==SIMSTATE_ON ))
m_pCPlotData->DrawPlot();
return 0;
}
//////////////////////////////////////////////////////////////////////
// Called when process has finished due to error or file done.
//////////////////////////////////////////////////////////////////////
afx_msg LRESULT CPathSimView::OnDone(UINT x, LONG y)
{
CPathSimDoc* pDoc = GetDocument();
pDoc->m_SimState = SIMSTATE_OFF;
m_StartCtrl.EnableWindow(TRUE);
m_StopCtrl.EnableWindow(FALSE);
EnableAllCtrls(TRUE);
return 0;
}
//////////////////////////////////////////////////////////////////////
// Called when process has finished due to error or file done.
//////////////////////////////////////////////////////////////////////
afx_msg LRESULT CPathSimView::OnError(UINT x, LONG y)
{
CPathSimDoc* pDoc = GetDocument();
CString err;
pDoc->m_SimState = SIMSTATE_ON;
m_StartCtrl.EnableWindow(TRUE);
m_StopCtrl.EnableWindow(FALSE);
EnableAllCtrls(TRUE);
m_pCIOCntrl->GetErrorMsg(err);
::AfxMessageBox(err);
return 0;
}
//called by clicking on the start button or if wait period is over
void CPathSimView::OnStart()
{
CPathSimDoc* pDoc = GetDocument();
ASSERT(pDoc);
if( (pDoc->m_InputSelect==USE_WAVEFILE) &&
(pDoc->m_OutputSelect==USE_WAVEFILE))
pDoc->m_WaveToWave = TRUE;
else
pDoc->m_WaveToWave = FALSE;
switch( pDoc->m_SimState)
{
case SIMSTATE_OFF:
if(!pDoc->m_UseDelayStart)
{
if(m_pCIOCntrl)
m_pCIOCntrl->StartIO(m_hWnd,pDoc);
pDoc->m_StartTime = CTime::GetCurrentTime();
pDoc->m_SimState = SIMSTATE_ON;
}
else
pDoc->m_SimState = SIMSTATE_WAIT;
break;
case SIMSTATE_WAIT:
if(m_pCIOCntrl)
m_pCIOCntrl->StartIO(m_hWnd,pDoc);
pDoc->m_StartTime = CTime::GetCurrentTime();
pDoc->m_SimState = SIMSTATE_ON;
break;
case SIMSTATE_ON:
break;
}
EnableAllCtrls(FALSE);
m_StartCtrl.EnableWindow(FALSE);
m_StopCtrl.EnableWindow(TRUE);
}
void CPathSimView::OnStop()
{
CPathSimDoc* pDoc = GetDocument();
switch( pDoc->m_SimState)
{
case SIMSTATE_ON:
case SIMSTATE_WAIT:
if(m_pCIOCntrl)
m_pCIOCntrl->StopIO();
pDoc->m_SimState = SIMSTATE_OFF;
break;
case SIMSTATE_OFF:
break;
}
m_StartCtrl.EnableWindow(TRUE);
m_StopCtrl.EnableWindow(FALSE);
EnableAllCtrls(TRUE);
}
void CPathSimView::EnableAllCtrls(BOOL val)
{
CWnd* pWnd;
pWnd = GetDlgItem( IDC_INSELECT ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val);
pWnd = GetDlgItem( IDC_OUTSELECT ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val);
pWnd = GetDlgItem( IDC_EDITDELAY1 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val);
pWnd = GetDlgItem( IDC_EDITDELAY2 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val);
pWnd = GetDlgItem( IDC_EDITSPREAD0 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val&m_Path0On);
pWnd = GetDlgItem( IDC_EDITSPREAD1 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val&m_Path1On);
pWnd = GetDlgItem( IDC_EDITSPREAD2 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val&m_Path2On);
pWnd = GetDlgItem( IDC_EDITOFFSET0 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val&m_Path0On);
pWnd = GetDlgItem( IDC_EDITOFFSET1 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val&m_Path1On);
pWnd = GetDlgItem( IDC_EDITOFFSET2 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val&m_Path2On);
pWnd = GetDlgItem( IDC_EDITSNR ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(m_AWGNOn);
pWnd = GetDlgItem( IDC_AWGNONOFF ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val);
pWnd = GetDlgItem( IDC_PATHONOFF0 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val);
pWnd = GetDlgItem( IDC_PATHONOFF1 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val);
pWnd = GetDlgItem( IDC_PATHONOFF2 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val);
pWnd = GetDlgItem( IDC_EDITRUNTIME ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val);
pWnd = GetDlgItem( IDC_STARTEDIT_HOUR ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val&m_UseDelayStart);
pWnd = GetDlgItem( IDC_STARTEDIT_MIN ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val&m_UseDelayStart);
pWnd = GetDlgItem( IDC_USEDELAYSTART ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(val);
}
void CPathSimView::OnInselect()
{
CPathSimDoc* pDoc = GetDocument();
CInDlg dlg;
dlg.m_InputSelect = pDoc->m_InputSelect;
dlg.m_InFileName = pDoc->m_InFileName;
dlg.m_InFilePath = pDoc->m_InFilePath;
dlg.m_InFileInfo = pDoc->m_InFileInfo;
dlg.m_InFileLength = pDoc->m_InFileLength;
if (dlg.DoModal() == IDOK)
{
pDoc->m_InputSelect = dlg.m_InputSelect;
pDoc->m_InFileName = dlg.m_InFileName;
pDoc->m_InFilePath = dlg.m_InFilePath;
pDoc->m_InFileInfo = dlg.m_InFileInfo;
pDoc->m_InFileLength = dlg.m_InFileLength;
}
if(pDoc->m_InputSelect == USE_WAVEFILE)
{
m_InInfoCtrl.SetWindowText( pDoc->m_InFileInfo );
m_InFileCtrl.SetWindowText( pDoc->m_InFileName );
pDoc->m_InFileLength = dlg.m_InFileLength;
OnKillfocusEditruntime();
}
else
{
m_InFileCtrl.SetWindowText( _T("SoundCard") );
m_InInfoCtrl.SetWindowText( _T("8KHz, 16Bit,Mono"));
}
}
void CPathSimView::OnOutselect()
{
CPathSimDoc* pDoc = GetDocument();
COutDlg dlg;
CString str;
dlg.m_OutputSelect = pDoc->m_OutputSelect;
dlg.m_OutFilePath = pDoc->m_OutFilePath;
dlg.m_OutFileName = pDoc->m_OutFileName;
if (dlg.DoModal() == IDOK)
{
pDoc->m_OutputSelect = dlg.m_OutputSelect;
pDoc->m_OutFilePath = dlg.m_OutFilePath;
pDoc->m_OutFileName = dlg.m_OutFileName;
}
if(pDoc->m_OutputSelect == USE_WAVEFILE)
{
str = pDoc->m_OutFileName;
if(pDoc->m_AppendTitle)
str.Replace( _T("."), _T("''Title''.") );
m_OutFileCtrl.SetWindowText( str );
m_OutInfoCtrl.SetWindowText( _T("") );
}
else
{
m_OutFileCtrl.SetWindowText( _T("SoundCard") );
m_OutInfoCtrl.SetWindowText( _T("8KHz, 16Bit,Mono"));
}
UpdateDiskInfo();
}
void CPathSimView::OnDeltaposSnrspin(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
UpdateData(TRUE); // get latest SNR value from edit box
m_SNRSetValue = m_SNRSetValue - pNMUpDown->iDelta;
if(m_SNRSetValue>100)
m_SNRSetValue = 100;
if(m_SNRSetValue< -50)
m_SNRSetValue = -50;
GetDocument()->m_SNRSetValue = m_SNRSetValue;
UpdateData(FALSE); // put latest SNR value into edit box
m_pCIOCntrl->SetSNRValue(m_SNRSetValue);
*pResult = 0;
}
void CPathSimView::OnKillfocusEdittitle()
{
UpdateData(TRUE);
GetDocument()->m_SimTitle = m_SimTitle;
}
void CPathSimView::OnKillfocusEditruntime()
{
CPathSimDoc* pDoc = GetDocument();
INT intime;
UpdateData(TRUE);
m_TimeLimit = m_TimeLimit*60;
if(pDoc->m_InputSelect == USE_WAVEFILE)
{
intime = (pDoc->m_InFileLength/8000) +1;
if( m_TimeLimit > intime )
m_TimeLimit = intime;
}
pDoc->m_TimeLimit = m_TimeLimit;
UpdateDiskInfo();
m_TimeLimit = pDoc->m_TimeLimit/60;
UpdateData(FALSE);
}
void CPathSimView::OnUsedelaystart()
{
CWnd* pWnd;
UpdateData(TRUE);
GetDocument()->m_UseDelayStart = m_UseDelayStart;
pWnd = GetDlgItem( IDC_STARTEDIT_HOUR ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(m_UseDelayStart);
pWnd = GetDlgItem( IDC_STARTEDIT_MIN ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(m_UseDelayStart);
}
void CPathSimView::OnKillfocusStarteditHour()
{
UpdateData(TRUE);
GetDocument()->m_DelayStartHour = m_DelayStartHour;
}
void CPathSimView::OnKillfocusStarteditMin()
{
UpdateData(TRUE);
GetDocument()->m_DelayStartMin = m_DelayStartMin;
}
void CPathSimView::OnKillfocusEditdelay1()
{
UpdateData(TRUE);
GetDocument()->m_Delay1 = m_Delay1;
}
void CPathSimView::OnKillfocusEditdelay2()
{
UpdateData(TRUE);
GetDocument()->m_Delay2 = m_Delay2;
}
void CPathSimView::OnKillfocusEditoffset0()
{
UpdateData(TRUE);
GetDocument()->m_Offset0 = m_Offset0;
}
void CPathSimView::OnKillfocusEditoffset1()
{
UpdateData(TRUE);
GetDocument()->m_Offset1 = m_Offset1;
}
void CPathSimView::OnKillfocusEditoffset2()
{
UpdateData(TRUE);
GetDocument()->m_Offset2 = m_Offset2;
}
void CPathSimView::OnKillfocusEditsnr()
{
UpdateData(TRUE);
GetDocument()->m_SNRSetValue = m_SNRSetValue;
m_pCIOCntrl->SetSNRValue(m_SNRSetValue);
}
void CPathSimView::OnPathChange()
{
CWnd* pWnd;
CPathSimDoc* pDoc = GetDocument();
UpdateData(TRUE);
pDoc->m_AWGNOn = m_AWGNOn;
pDoc->m_Path0On = m_Path0On;
pDoc->m_Path1On = m_Path1On;
pDoc->m_Path2On = m_Path2On;
pWnd = GetDlgItem( IDC_EDITSNR ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(m_AWGNOn);
pWnd = GetDlgItem( IDC_EDITOFFSET0 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(m_Path0On);
pWnd = GetDlgItem( IDC_EDITOFFSET1 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(m_Path1On);
pWnd = GetDlgItem( IDC_EDITOFFSET2 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(m_Path2On);
pWnd = GetDlgItem( IDC_EDITSPREAD0 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(m_Path0On);
pWnd = GetDlgItem( IDC_EDITSPREAD1 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(m_Path1On);
pWnd = GetDlgItem( IDC_EDITSPREAD2 ); ASSERT_VALID(pWnd);
pWnd->EnableWindow(m_Path2On);
if((m_Path0On|m_Path1On|m_Path2On) )
{
m_Bypass1Ctrl.ShowWindow( SW_HIDE);
m_Bypass2Ctrl.ShowWindow( SW_HIDE);
pDoc->m_DirectPathActive = FALSE;
}
else
{
m_Bypass1Ctrl.ShowWindow( SW_RESTORE);
m_Bypass2Ctrl.ShowWindow( SW_RESTORE);
pDoc->m_DirectPathActive = TRUE;
}
}
void CPathSimView::OnKillfocusEditspread0()
{
UpdateData(TRUE);
GetDocument()->m_Spread0 = m_Spread0;
}
void CPathSimView::OnKillfocusEditspread1()
{
UpdateData(TRUE);
GetDocument()->m_Spread1 = m_Spread1;
}
void CPathSimView::OnKillfocusEditspread2()
{
UpdateData(TRUE);
GetDocument()->m_Spread2 = m_Spread2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -