📄 winpskview.cpp
字号:
//////////////////////////////////////////////////////////////////////
// Service timer for status updates.
//////////////////////////////////////////////////////////////////////
void CWinPSKView::OnTimer(UINT nIDEvent)
{
if( nIDEvent == m_TimerID )
UpdateStatus();
CFormView::OnTimer(nIDEvent);
}
//////////////////////////////////////////////////////////////////////
// Called to update the button and other status states.
//////////////////////////////////////////////////////////////////////
void CWinPSKView::UpdateStatus()
{
CWinPSKDoc* pDoc;
static BOOL tog = FALSE;
pDoc = GetDocument();
ASSERT_VALID( pDoc );
if(pDoc->m_MacroStartTX) //if macro needs to turn on tx state
{
if( m_ProgramState == STATE_RX)
ToggleTR();
pDoc->m_MacroStartTX = FALSE;
}
switch( m_ProgramState )
{
case STATE_TUNE:
if(tog)
m_TRCntrl.SetIcon(AfxGetApp()->LoadIcon(IDI_TUNE));
else
m_TRCntrl.SetIcon(AfxGetApp()->LoadIcon(IDI_TROFF));
break;
case STATE_TX:
if(tog)
m_TRCntrl.SetIcon(AfxGetApp()->LoadIcon(IDI_TRXMIT));
else
m_TRCntrl.SetIcon(AfxGetApp()->LoadIcon(IDI_TROFF));
break;
case STATE_FINISH:
if(tog)
m_TRCntrl.SetIcon(AfxGetApp()->LoadIcon(IDI_TXFINISH));
else
m_TRCntrl.SetIcon(AfxGetApp()->LoadIcon(IDI_TROFF));
break;
}
tog = !tog;
if(m_IMDDispDelay > 0)
{
m_IMDDispDelay--;
}
else
{
m_IMDDispDelay = 0;
pDoc->m_IMDRdy = FALSE;
}
}
////////////////////////////////////////////////////////////////////
//////////////////// ClipBoard Functionality //////////////////
////////////////////////////////////////////////////////////////////
// The receive window is read only so only copy operations are allowed
// The transmit window can be pasted into but not copied from.
////////////////////////////////////////////////////////////////////
void CWinPSKView::OnEditCopy()
{
CWinPSKDoc* pDoc = GetDocument();
CWnd* pWnd = GetFocus();
if( pWnd == pDoc->m_pTheirCallEdit)
pDoc->m_pTheirCallEdit->Copy();
else
if( pWnd == pDoc->m_pRcvEdit )
pDoc->m_pRcvEdit->CopyClip();
}
void CWinPSKView::OnEditPaste()
{
CWinPSKDoc* pDoc = GetDocument();
CWnd* pWnd = GetFocus();
if( pWnd == pDoc->m_pTheirCallEdit)
pDoc->m_pTheirCallEdit->PasteClip();
else
if( pWnd == pDoc->m_pXmitEdit )
{
pDoc->m_pXmitEdit->Paste();
pDoc->m_pXmitEdit->SetFocus();
}
}
void CWinPSKView::OnEditClear()
{
CWinPSKDoc* pDoc = GetDocument();
CWnd* pWnd = GetFocus();
if( pWnd == pDoc->m_pTheirCallEdit)
pDoc->m_pTheirCallEdit->Clear();
else
if( pWnd == pDoc->m_pXmitEdit )
pDoc->m_pXmitEdit->Clear();
}
void CWinPSKView::OnEditCut()
{
CWinPSKDoc* pDoc = GetDocument();
CWnd* pWnd = GetFocus();
if( pWnd == pDoc->m_pTheirCallEdit)
pDoc->m_pTheirCallEdit->Cut();
else
if( pWnd == pDoc->m_pXmitEdit )
pDoc->m_pXmitEdit->Cut();
}
void CWinPSKView::OnEditUndo()
{
CWinPSKDoc* pDoc = GetDocument();
CWnd* pWnd = GetFocus();
if( pWnd == pDoc->m_pTheirCallEdit)
pDoc->m_pTheirCallEdit->Undo();
else
if( pWnd == pDoc->m_pXmitEdit )
pDoc->m_pXmitEdit->Undo();
}
/////////////////// Indicate what clipboard operations are OK
void CWinPSKView::OnUpdateEditCopy(CCmdUI* pCmdUI)
{
CWinPSKDoc* pDoc = GetDocument();
CWnd* pWnd = GetFocus();
LONG s,e;
if( pWnd == pDoc->m_pTheirCallEdit)
{
pDoc->m_pTheirCallEdit->GetSel(s,e);
pCmdUI->Enable( e > s );
}
else
if( pWnd == pDoc->m_pRcvEdit )
pCmdUI->Enable( pDoc->m_pRcvEdit->OKCopy() );
else
pCmdUI->Enable( FALSE );
}
void CWinPSKView::OnUpdateEditCut(CCmdUI* pCmdUI)
{
CWinPSKDoc* pDoc = GetDocument();
CWnd* pWnd = GetFocus();
LONG s,e;
if( pWnd == pDoc->m_pTheirCallEdit)
{
pDoc->m_pTheirCallEdit->GetSel(s,e);
pCmdUI->Enable( e > s );
}
else
if( pWnd == pDoc->m_pXmitEdit )
pCmdUI->Enable( pDoc->m_pXmitEdit->OKCutClip() );
else
pCmdUI->Enable( FALSE );
}
void CWinPSKView::OnUpdateEditPaste(CCmdUI* pCmdUI)
{
CWinPSKDoc* pDoc = GetDocument();
CWnd* pWnd = GetFocus();
if( pWnd != pDoc->m_pRcvEdit)
pCmdUI->Enable( ::IsClipboardFormatAvailable(CF_TEXT) );
else
pCmdUI->Enable( FALSE );
}
void CWinPSKView::OnUpdateEditUndo(CCmdUI* pCmdUI)
{
CWinPSKDoc* pDoc = GetDocument();
CWnd* pWnd = GetFocus();
if( pWnd == pDoc->m_pTheirCallEdit)
pCmdUI->Enable( pDoc->m_pTheirCallEdit->CanUndo() );
else
if( pWnd == pDoc->m_pXmitEdit )
pCmdUI->Enable( pDoc->m_pXmitEdit->CanUndo() );
else
pCmdUI->Enable( FALSE );
}
void CWinPSKView::OnUpdateEditClear(CCmdUI* pCmdUI)
{
CWinPSKDoc* pDoc = GetDocument();
CWnd* pWnd = GetFocus();
LONG s,e;
if( pWnd == pDoc->m_pTheirCallEdit)
{
pDoc->m_pTheirCallEdit->GetSel(s,e);
pCmdUI->Enable( e > s );
}
else
if( pWnd == pDoc->m_pXmitEdit )
pCmdUI->Enable( pDoc->m_pXmitEdit->OKClearSel() );
else
pCmdUI->Enable( FALSE );
}
////////////////////////////////////////////////////////////////////
//////////////// Macro Key Functionality //////////////////
////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Called when Right mouse Button is clicked on a macro button.
//////////////////////////////////////////////////////////////////////
void CWinPSKView::OnContextMenu(CWnd* pWnd, CPoint point)
{
switch( pWnd->GetDlgCtrlID() )
{
case IDC_M1BUTTON:
MacroDlg(0);
break;
case IDC_M2BUTTON:
MacroDlg(1);
break;
case IDC_M3BUTTON:
MacroDlg(2);
break;
case IDC_M4BUTTON:
MacroDlg(3);
break;
case IDC_M5BUTTON:
MacroDlg(4);
break;
case IDC_M6BUTTON:
MacroDlg(5);
break;
case IDC_M7BUTTON:
MacroDlg(6);
break;
case IDC_M8BUTTON:
MacroDlg(7);
break;
case IDC_M9BUTTON:
MacroDlg(8);
break;
case IDC_M10BUTTON:
MacroDlg(9);
break;
default:
break;
}
}
//////////////////////////////////////////////////////////////////////
// Called to bring up a macro setup dialog.
//////////////////////////////////////////////////////////////////////
void CWinPSKView::MacroDlg(INT key)
{
CWinPSKDoc* pDoc = GetDocument();
CMacroDlg dlg;
INT index = key + pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS;
dlg.m_MacroKey = key;
dlg.m_MacroSet = pDoc->m_pSettings->m_MacroSet;
dlg.m_sMacroTitle = pDoc->m_pSettings->m_saMacroTitle[index];
dlg.m_sData = pDoc->m_pSettings->m_saMacroData[index];
if (dlg.DoModal() == IDOK)
{
CString str;
str = dlg.m_sData.Left(200); //limit to 200 characters
dlg.m_sData = str;
pDoc->m_pSettings->m_saMacroData.SetAt(index,dlg.m_sData);
pDoc->m_pSettings->m_saMacroTitle.SetAt(index,dlg.m_sMacroTitle);
str.Format(_T("F%d="), key+1);
m_MTitleCtrl[key].SetWindowText( str+dlg.m_sMacroTitle);
UpdateData(FALSE);
}
}
///////////////////////////////////////////////////////////////////////
// Routines called when macro buttons are left clicked to execute
///////////////////////////////////////////////////////////////////////
void CWinPSKView::OnM1button()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pXmitEdit->InsertCString( pDoc->m_pSettings->m_saMacroData[
0+pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS] );
}
void CWinPSKView::OnM2button()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pXmitEdit->InsertCString( pDoc->m_pSettings->m_saMacroData[
1+pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS] );
}
void CWinPSKView::OnM3button()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pXmitEdit->InsertCString( pDoc->m_pSettings->m_saMacroData[
2+pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS] );
}
void CWinPSKView::OnM4button()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pXmitEdit->InsertCString( pDoc->m_pSettings->m_saMacroData[
3+pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS] );
}
void CWinPSKView::OnM5button()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pXmitEdit->InsertCString( pDoc->m_pSettings->m_saMacroData[
4+pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS] );
}
void CWinPSKView::OnM6button()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pXmitEdit->InsertCString( pDoc->m_pSettings->m_saMacroData[
5+pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS] );
}
void CWinPSKView::OnM7button()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pXmitEdit->InsertCString( pDoc->m_pSettings->m_saMacroData[
6+pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS] );
}
void CWinPSKView::OnM8button()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pXmitEdit->InsertCString( pDoc->m_pSettings->m_saMacroData[
7+pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS] );
}
void CWinPSKView::OnM9button()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pXmitEdit->InsertCString( pDoc->m_pSettings->m_saMacroData[
8+pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS] );
}
void CWinPSKView::OnM10button()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pXmitEdit->InsertCString( pDoc->m_pSettings->m_saMacroData[
9+pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS] );
}
void CWinPSKView::OnClrqso()
{
CWinPSKDoc* pDoc = GetDocument();
pDoc->m_pTextGrabEdit->ClearAll();
pDoc->m_pTheirNameEdit->ClearAll();
pDoc->m_pTheirCallEdit->ClearAll();
}
BOOL CWinPSKView::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
{
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
UINT nID = pNMHDR->idFrom;
CWinPSKDoc* pDoc = GetDocument();
CString str;
CString str2;
if (pTTT->uFlags & TTF_IDISHWND)
{
nID = ::GetDlgCtrlID((HWND)nID);
if(!nID)
return(FALSE);
pTTT->hinst =NULL;
switch( nID ) //convert to macro key index 0-9
{
case IDC_M1BUTTON:
nID = 0;
break;
case IDC_M2BUTTON:
nID = 1;
break;
case IDC_M3BUTTON:
nID = 2;
break;
case IDC_M4BUTTON:
nID = 3;
break;
case IDC_M5BUTTON:
nID = 4;
break;
case IDC_M6BUTTON:
nID = 5;
break;
case IDC_M7BUTTON:
nID = 6;
break;
case IDC_M8BUTTON:
nID = 7;
break;
case IDC_M9BUTTON:
nID = 8;
break;
case IDC_M10BUTTON:
nID = 9;
break;
case IDC_SQUELCH:
return(FALSE);
break;
default:
return(FALSE);
break;
}
str2 = pDoc->m_pSettings->m_saMacroData[nID +
pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS];
str = str2.Left(79); //just get first 79 characters
strcpy( pTTT->szText, (PCHAR)(LPCTSTR)str );
return(TRUE);
}
return(FALSE);
}
void CWinPSKView::OnDecfnset()
{
CWinPSKDoc* pDoc = GetDocument();
CString str;
if( --pDoc->m_pSettings->m_MacroSet < 0 )
{
pDoc->m_pSettings->m_MacroSet = NUM_MACROSETS-1;
}
str.Format(_T("Macro Set = %d"), pDoc->m_pSettings->m_MacroSet+1);
m_MacroSetTxtCtrl.SetWindowText( str );
for( INT i=0; i<NUM_MACROKEYS; i++)
{
str.Format(_T("F%d="), i+1);
str = str + pDoc->m_pSettings->m_saMacroTitle[i +
pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS];
m_MTitleCtrl[i].SetWindowText(str);
}
}
void CWinPSKView::OnIncfnset()
{
CWinPSKDoc* pDoc = GetDocument();
CString str;
if( ++pDoc->m_pSettings->m_MacroSet >= NUM_MACROSETS )
{
pDoc->m_pSettings->m_MacroSet = 0;
}
str.Format(_T("Macro Set = %d"), pDoc->m_pSettings->m_MacroSet+1);
m_MacroSetTxtCtrl.SetWindowText( str );
for( INT i=0; i<NUM_MACROKEYS; i++)
{
str.Format(_T("F%d="), i+1);
str = str + pDoc->m_pSettings->m_saMacroTitle[i +
pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS];
m_MTitleCtrl[i].SetWindowText(str);
}
}
void CWinPSKView::OnSethome()
{
CWinPSKDoc* pDoc = GetDocument();
CString str;
pDoc->m_pSettings->m_MacroSet = 0;
str.Format(_T("Macro Set = %d"), pDoc->m_pSettings->m_MacroSet+1);
m_MacroSetTxtCtrl.SetWindowText( str );
for( INT i=0; i<NUM_MACROKEYS; i++)
{
str.Format(_T("F%d="), i+1);
str = str + pDoc->m_pSettings->m_saMacroTitle[i +
pDoc->m_pSettings->m_MacroSet*NUM_MACROKEYS];
m_MTitleCtrl[i].SetWindowText(str);
}
}
void CWinPSKView::OnRun()
{
CWinPSKDoc* pDoc = GetDocument();
if(m_DLLRunning)
StopDLL();
else
StartDLL(pDoc);
}
//Called by squelch control when someone clicks on the threshold
void CWinPSKView::SquelchThreshCallback(INT threshold)
{
CWinPSKDoc* pDoc = GetDocument();
ASSERT(pDoc);
pDoc->m_pSettings->m_SQThreshold = threshold;
fnSetSquelchThreshold(pDoc->m_pSettings->m_SQThreshold,
pDoc->m_pSettings->m_SquelchSpeed, RX_CHAN);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -