📄 mainfrm.cpp
字号:
m_unCycTimer=0;
AfxMessageBox("报文格式不对!组合键Ctrl+Alt+P分析错误!");
}
}
break;
case 102:
{
SendLine(m_btTriggerCOM,m_dlgSend.Trigger[m_btTrigger].unTrigger-1);
KillTimer(102);
}
break;
case 103:
{
if(!AutoSave.bSave&&!AutoSave.bClear) KillTimer(103);
if(AutoSave.bSave)
{
CTime ttmp=CTime::GetCurrentTime();
CString strs;
strs.Format ("%04d%02d%02d %02d%02d",ttmp.GetYear (),ttmp.GetMonth (),ttmp.GetDay (),
ttmp.GetHour(),ttmp.GetMinute());
strs=AutoSave.strPath+strs+".pcf";
GetView()->SaveFile(strs);
strs.Empty();
}
if(AutoSave.bClear) SendMessage(WM_COMMAND,ID_SCC_CLEARDATA);
}
break;
}
CGuiFrameWnd::OnTimer(nIDEvent);
}
void CMainFrame::OnFileOpen()
{
// TODO: Add your command handler code here
CString strs=GetRWPath(1,"打开串口监视报文");
if(!strs.IsEmpty())
{
if(GetView()->LoadFile(strs)) AfxGetApp()->AddToRecentFileList(strs);
strs.Empty();
}
}
void CMainFrame::OnFileXsave()
{
// TODO: Add your command handler code here
CTime ttmp=CTime::GetCurrentTime();
CString strs;
strs.Format ("%04d%02d%02d %02d%02d",ttmp.GetYear (),ttmp.GetMonth (),ttmp.GetDay (),
ttmp.GetHour(),ttmp.GetMinute());
strs=GetRWPath(0,"保存串口监视报文",strs);
if(!strs.IsEmpty())
{
if(GetView()->SaveFile(strs)) AfxGetApp()->AddToRecentFileList(strs);
strs.Empty();
}
}
void CMainFrame::OnUpdateFileXsave(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(GetView()->IsModifyed());
}
void CMainFrame::OnSCCMRU(UINT nID)
{
int nIndex = nID - ID_FILE_MRU_FILE1;
ASSERT((*(theApp.GetFileList()))[nIndex].GetLength() != 0);
if (!GetView()->LoadFile((*(theApp.GetFileList()))[nIndex]))
theApp.RemoveFile(nIndex);
}
void CMainFrame::OnSCCView(UINT nID)
{
int ny=GetSystemMetrics(SM_CYSCREEN);
int nx=GetSystemMetrics(SM_CXSCREEN);
if(nID==ID_VIEW_CENTER) MoveWindow(CRect(nx/4,ny/4,nx*3/4,ny*3/4));
else if(nID==ID_VIEW_TOPHARF) MoveWindow(CRect(0,0,nx,ny/2));
else if(nID==ID_VIEW_BOTTOMHARF) MoveWindow(CRect(0,ny/2,nx,ny));
else if(nID==ID_VIEW_LEFTHARF) MoveWindow(CRect(0,0,nx/2,ny));
else if(nID==ID_VIEW_RIGHTHARF) MoveWindow(CRect(nx/2,0,nx,ny));
else if(nID==ID_ALWAYSONTOP)
{
DWORD dwConfig=AfxGetApp()->GetProfileInt("Settings","Common",1);
if(GetExStyle()&WS_EX_TOPMOST)
{
SetWindowPos(&wndNoTopMost,0, 0, 0, 0,SWP_NOSIZE|SWP_NOMOVE);
dwConfig&=0xFEFF;
}
else
{
SetWindowPos(&wndTopMost,0, 0, 0, 0,SWP_NOSIZE|SWP_NOMOVE);
dwConfig|=0x100;
}
AfxGetApp()->WriteProfileInt("Settings","Common",dwConfig);
}
else if(nID==ID_ADVANCE_SEND)
{
m_dlgSend.ShowWindow(1);
m_dlgSend.SetFocus();
}
else if(nID==ID_SCC_CYCSEND)
{
if(m_unCycTimer==0)
{
m_unCycTimer=SetTimer(101,m_dlgSend.m_unTime,NULL);
m_unMulti=m_dlgSend.m_unStart;
}
else
{
KillTimer(m_unCycTimer);
m_unCycTimer=0;
}
}
else if(nID==ID_SCC_TRIGGER)
{
m_bTrigger=!m_bTrigger;
}
else if(nID==ID_SCC_TRANSMIT)
{
CTransmit dlgTrans;
if(dlgTrans.DoModal()==IDCANCEL)
{
Trasmt.bCOM=dlgTrans.m_bCOM;
Trasmt.btCOM1=dlgTrans.m_btCOM1;
Trasmt.btCOM2=dlgTrans.m_btCOM2;
}
}
else if(nID==ID_FILE_AUTOSAVE)
{
CDlgAutoSave dlgAS;
dlgAS.m_bAS=AutoSave.bSave;
dlgAS.m_bClear=AutoSave.bClear;
dlgAS.m_nASTime=AutoSave.nTime;
dlgAS.m_strPath=AutoSave.strPath;
if(dlgAS.DoModal()==IDOK)
{
KillTimer(103);
AutoSave.strPath=dlgAS.m_strPath;
AutoSave.bClear=dlgAS.m_bClear;
AutoSave.bSave=dlgAS.m_bAS;
AutoSave.nTime=dlgAS.m_nASTime;
if(AutoSave.bSave||AutoSave.bClear)
SetTimer(103,AutoSave.nTime*60*1000,NULL);
}
}
else if(nID==ID_SHOW_FILTER)
{
m_dlgFilter.ShowWindow(1);
m_dlgFilter.SetFocus();
}
else if(nID==ID_FILE_OPENS)
{
CString strs=GetRWPath(1,"打开发送窗报文");
if(!strs.IsEmpty())
{
m_wndSF.m_xrec.LoadFile(strs);
strs.Empty();
}
}
else if(nID==ID_FILE_SAVESEND)
{
CString strs=GetRWPath(0,"保存发送窗报文","SCC");
if(!strs.IsEmpty())
{
m_wndSF.m_xrec.SaveFile(strs);
strs.Empty();
}
}
}
void CMainFrame::OnUpdateSCCView(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if(pCmdUI->m_nID ==ID_ALWAYSONTOP) pCmdUI->SetCheck(GetExStyle()&WS_EX_TOPMOST);
else if(pCmdUI->m_nID ==ID_ADVANCE_SEND)
{
// pCmdUI->SetCheck(m_dlgSend.IsWindowVisible());
// pCmdUI->SetText(m_dlgSend.IsWindowVisible()?"隐藏高级发送窗(&A)":"显示高级发送窗(&A)");
}
else if(pCmdUI->m_nID ==ID_SCC_CYCSEND)
{
pCmdUI->SetCheck(m_unCycTimer!=0);
}
else if(pCmdUI->m_nID ==ID_SCC_TRIGGER)
{
pCmdUI->SetCheck(m_bTrigger);
}
else if((pCmdUI->m_nID ==ID_FILE_OPENS) ||(pCmdUI->m_nID ==ID_FILE_SAVESEND))
{
pCmdUI->Enable(m_wndSF.IsVisible());
}
}
void CMainFrame::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu)
{
// CGuiFrameWnd::OnMenuSelect(nItemID, nFlags, hSysMenu);
// TODO: Add your message handler code here
if ((ID_FILE_MRU_FILE1<=nItemID && nItemID<=ID_FILE_MRU_FILE16)
||(nItemID==ID_SCC_OPEN)||(nItemID==ID_SCC_PAUSE))
{
CString sFileName;
if(nItemID==ID_SCC_OPEN)
{
sFileName.Format("COM%d",m_nCurCOM+1);
if(IsCOMOpen()) sFileName="关闭"+sFileName;
else sFileName="打开"+sFileName;
}
else if(nItemID==ID_SCC_PAUSE)
{
sFileName=(m_bPauseDis?"继续报文监视":"暂停报文监视");
}
// else if(nItemID==ID_ADVANCE_SEND)
// {
// sFileName=(m_dlgSend.IsWindowVisible()?"隐藏高级发送窗":"显示高级发送窗");
// }
else
{
sFileName=(*(theApp.GetFileList()))[nItemID-ID_FILE_MRU_FILE1];
if(!sFileName.IsEmpty()) sFileName=_T("打开文件 ")+sFileName;
}
if(!sFileName.IsEmpty())
SendMessage(WM_SETMESSAGESTRING, 0, (LPARAM)(LPCTSTR)sFileName);
sFileName.Empty();
}
else CGuiFrameWnd::OnMenuSelect(nItemID, nFlags, hSysMenu);
}
BOOL CMainFrame::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);
// need to handle both ANSI and UNICODE versions of the message
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
TCHAR szFullText[256];
CString strTipText;
UINT nID = pNMHDR->idFrom;
if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
{
// idFrom is actually the HWND of the tool
nID = ::GetDlgCtrlID((HWND)nID);
}
if(nID==ID_SCC_OPEN)
{
strTipText.Format("COM%d",m_nCurCOM+1);
if(IsCOMOpen()) strTipText="关闭"+strTipText;
else strTipText="打开"+strTipText;
SendMessage(WM_SETMESSAGESTRING, 0, (LPARAM)(LPCTSTR)strTipText);
}
else if(nID==ID_SCC_PAUSE)
{
strTipText=(m_bPauseDis?"继续报文监视":"暂停报文监视");
SendMessage(WM_SETMESSAGESTRING, 0, (LPARAM)(LPCTSTR)strTipText);
}
// else if(nID==ID_ADVANCE_SEND)
// {
// strTipText=(m_dlgSend.IsWindowVisible()?"隐藏高级发送窗":"显示高级发送窗");
// }
else if (nID != 0) // will be zero on a separator
{
// don't handle the message if no string resource found
if (AfxLoadString(nID, szFullText) == 0)
return FALSE;
// this is the command id, not the button index
AfxExtractSubString(strTipText, szFullText, 1, '\n');
}
#ifndef _UNICODE
if (pNMHDR->code == TTN_NEEDTEXTA)
lstrcpyn(pTTTA->szText, strTipText, _countof(pTTTA->szText));
else
_mbstowcsz(pTTTW->szText, strTipText, _countof(pTTTW->szText));
#else
if (pNMHDR->code == TTN_NEEDTEXTA)
_wcstombsz(pTTTA->szText, strTipText, _countof(pTTTA->szText));
else
lstrcpyn(pTTTW->szText, strTipText, _countof(pTTTW->szText));
#endif
*pResult = 0;
// bring the tooltip window above other popup windows
::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,
SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);
strTipText.Empty();
return TRUE; // message was handled
}
void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CGuiFrameWnd::OnActivate(nState, pWndOther, bMinimized);
// TODO: Add your message handler code here
// m_dlgSend.SetTransper(23);
}
int CMainFrame::IsTriggerLine(CString str)
{
for(int i=0;i<TRIGGER_MAX;i++)
{
if(m_dlgSend.Trigger[i].bValiu)
{
if(str==m_wndSF.m_xrec.GetLineStr(m_dlgSend.Trigger[i].unLine-1))
return i;
// return m_dlgSend.Trigger[i].unTrigger;
}
}
return -1;
}
void CMainFrame::Transmits(int nCOM,LPBYTE lpbt, int nLength)
{
if(!Trasmt.bCOM) return;
CString str;
if(Trasmt.btCOM1==nCOM+1) nCOM=Trasmt.btCOM2-1;
else if(Trasmt.btCOM2==nCOM+1) nCOM=Trasmt.btCOM1-1;
if(!IsCOMOpen(nCOM)) return;
if(m_bAscRecv) str=((CString)lpbt).Left (nLength);
else str=CSCCTools::HexToStr(lpbt,nLength);
DisplayStr(str,nCOM,0);
GetCOM(nCOM)->WriteData(lpbt,nLength);
str.Empty();
}
BOOL CMainFrame::IsFilterFrame(LPBYTE lpb, int nLength)
{
if(!m_dlgFilter.m_bFilter) return 1;
BOOL bFilter=1;
for(int i=0;i<FILTER_MAX;i++)
{
if(m_dlgFilter.Filter[i].bFilter)
{
bFilter=0;
if(m_dlgFilter.Filter[i].btNo>nLength) return 0;
if(lpb[m_dlgFilter.Filter[i].btNo-1]==m_dlgFilter.Filter[i].btValiu)
return 1;
}
}
return bFilter;
}
CString CMainFrame::GetRWPath(BOOL bOpen, LPCSTR lpstr,LPCSTR lpstrName)
{
CString strs;
CFileDialog* dlgFileOpen=new CFileDialog(bOpen,".pcf",lpstrName);
dlgFileOpen->m_ofn.lStructSize=(GetVersion() < 0x80000000)?88:76;
dlgFileOpen->m_ofn .lpstrFilter ="PCStudio Frame Files(*.pcf)\0*.pcf\0";
dlgFileOpen->m_ofn.lpstrTitle =lpstr;
strs.Empty ();
if(dlgFileOpen->DoModal()==IDOK) strs=dlgFileOpen->GetPathName();
delete dlgFileOpen;
dlgFileOpen=NULL;
return strs;
}
void CMainFrame::SaveIni()
{
// CFile fIni("conf.ini")
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -