📄 histdatafrm.cpp
字号:
// HistDataFrm.cpp : implementation file
//
#include "stdafx.h"
#include "Sys.h"
#include "HistDataFrm.h"
#include "HistDigitView.h"
#include "HistWaveView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CHistDataFrm
IMPLEMENT_DYNCREATE(CHistDataFrm, CMDIChildWnd)
CHistDataFrm::CHistDataFrm()
{
m_bStart=FALSE;
m_ShowMode=2; // 波形回放(1为数字回放)
}
CHistDataFrm::~CHistDataFrm()
{
}
BEGIN_MESSAGE_MAP(CHistDataFrm, CMDIChildWnd)
ON_WM_CREATE()
ON_COMMAND_EX(CG_ID_VIEW_DIALOGBAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(CG_ID_VIEW_DIALOGBAR, OnUpdateControlBarMenu)
//{{AFX_MSG_MAP(CHistDataFrm)
ON_WM_LBUTTONUP()
ON_WM_TIMER()
ON_WM_SIZE()
ON_COMMAND(IDM_History_Start, OnHistoryStart)
ON_UPDATE_COMMAND_UI(IDM_History_Start, OnUpdateHistoryStart)
ON_COMMAND(IDM_History_Stop, OnHistoryStop)
ON_UPDATE_COMMAND_UI(IDM_History_Stop, OnUpdateHistoryStop)
ON_COMMAND(IDM_History_Digit, OnHistoryDigit)
ON_UPDATE_COMMAND_UI(IDM_History_Digit, OnUpdateHistoryDigit)
ON_COMMAND(IDM_History_Wave, OnHistoryWave)
ON_UPDATE_COMMAND_UI(IDM_History_Wave, OnUpdateHistoryWave)
ON_WM_HSCROLL()
ON_WM_VSCROLL()
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_Offset, OnCustomdrawSLIDEROffset)
ON_CBN_SELCHANGE(IDC_COMBO_Rate, OnSelchangeCOMBORate)
ON_EN_CHANGE(IDC_EDIT_Offset, OnChangeEDITOffset)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHistDataFrm message handlers
BOOL CHistDataFrm::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if (!m_wndSplitter.CreateStatic(this, 1, 2)) // 创建1行2列分割
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
// add the first splitter pane - the default view in column 0
// 创建第一个格子,在0列中使用默认的视图(由文档模板决定)
if (!m_wndSplitter.CreateView(0, 0,
pContext->m_pNewViewClass, CSize(450, 50), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
if (!m_wndSplitter.CreateView(0, 1,
RUNTIME_CLASS(CHistWaveView), CSize(350, 50), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
return TRUE;
//return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}
int CHistDataFrm::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add a menu item that will toggle the visibility of the // dialog bar named "DialogBar": // 1. In ResourceView, open the menu resource that is used by // the CHistDataFrm class // 2. Select the View submenu // 3. Double-click on the blank item at the bottom of the submenu // 4. Assign the new item an ID: CG_ID_VIEW_DIALOGBAR // 5. Assign the item a Caption: DialogBar // TODO: Change the value of CG_ID_VIEW_DIALOGBAR to an appropriate value: // 1. Open the file resource.h // CG: The following block was inserted by the 'Dialog Bar' component { // Initialize dialog bar m_wndSetupBar if (!m_wndSetupBar.Create(this, CG_IDD_HistoryDlg, CBRS_BOTTOM | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE, CG_ID_VIEW_DIALOGBAR)) { TRACE0("Failed to create dialog bar m_wndSetupBar\n"); return -1; // fail to create } m_wndSetupBar.EnableDocking(CBRS_ALIGN_BOTTOM | CBRS_ALIGN_TOP); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndSetupBar); }
return 0;
}
void CHistDataFrm::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CMDIChildWnd::OnLButtonUp(nFlags, point);
}
void CHistDataFrm::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
RedrawDataWindow();
CMDIChildWnd::OnTimer(nIDEvent);
}
void CHistDataFrm::OnSize(UINT nType, int cx, int cy)
{
CMDIChildWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
}
void CHistDataFrm::OnHistoryStart()
{
// TODO: Add your command handler code here
m_bStart=TRUE;
SetTimer(1, 200, NULL);
}
void CHistDataFrm::OnUpdateHistoryStart(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(m_bStart==FALSE?1:0);
}
void CHistDataFrm::OnHistoryStop()
{
// TODO: Add your command handler code here
m_bStart=FALSE;
KillTimer(1);
}
void CHistDataFrm::OnUpdateHistoryStop(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(m_bStart==TRUE?1:0);
}
void CHistDataFrm::OnHistoryDigit()
{
// TODO: Add your command handler code here
m_ShowMode=1;
}
void CHistDataFrm::OnUpdateHistoryDigit(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_ShowMode==1? 1:0);
}
void CHistDataFrm::OnHistoryWave()
{
// TODO: Add your command handler code here
CHistDataDoc* pDoc=(CHistDataDoc*)GetActiveDocument();
m_ShowMode=2;
}
void CHistDataFrm::OnUpdateHistoryWave(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_ShowMode==2? 1:0);
}
void CHistDataFrm::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CMDIChildWnd::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CHistDataFrm::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CMDIChildWnd::OnVScroll(nSBCode, nPos, pScrollBar);
}
void CHistDataFrm::OnCustomdrawSLIDEROffset(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CHistDataDoc* pDoc=(CHistDataDoc*)GetActiveDocument(); // 在Frame中取得当前文档指针
CSliderCtrl* pSliderOffset=(CSliderCtrl*)(m_wndSetupBar.GetDlgItem(IDC_SLIDER_Offset));
int Pos=pSliderOffset->GetPos(); // 取得滑动条位置(即文件偏移(字))
pSliderOffset->SetPos(Pos);
pDoc->m_Offset=Pos;
CString str;
CEdit* pEditOffset=(CEdit*)(m_wndSetupBar.GetDlgItem(IDC_EDIT_Offset));
str.Format("%d", Pos);
pEditOffset->SetWindowText(str); // 显示文件偏移
RedrawDataWindow(); // 重绘数据视图
*pResult = 0;
}
void CHistDataFrm::RedrawDataWindow(void)
{
CString str;
CHistDataDoc* pDoc=(CHistDataDoc*)GetActiveDocument(); // 在Frame中取得当前文档指针
CHistDigitView* pDigitView=(CHistDigitView*)(CWnd::FromHandle(pDoc->m_hWndDigit));
CHistWaveView* pWaveView=(CHistWaveView*)(CWnd::FromHandle(pDoc->m_hWndWave));
CEdit* pOffset=(CEdit*)m_wndSetupBar.GetDlgItem(IDC_EDIT_Offset);
CEdit* pPos=(CEdit*)(m_wndSetupBar.GetDlgItem(IDC_EDIT_ScreenPos));
// 之所以除以通道数,是求出每通道点数
pDoc->m_ScreenOffset=pDoc->m_ScreenOffset+pDoc->m_Rate;
str.Format("%d", pDoc->m_ScreenOffset);
pPos->SetWindowText(str);
pDoc->ReadData();
pDoc->m_Offset+=pDoc->m_Rate;
switch(m_ShowMode)
{
case 1:
pDigitView->SetListView();
break;
case 2:
pWaveView->RedrawWindow();
break;
}
}
void CHistDataFrm::OnSelchangeCOMBORate()
{
// TODO: Add your control notification handler code here
CHistDataDoc* pDoc=(CHistDataDoc*)GetActiveDocument(); // 在Frame中取得当前文档指针
CComboBox* pRate=(CComboBox*)(m_wndSetupBar.GetDlgItem(IDC_COMBO_Rate));
CString str;
int Index=pRate->GetCurSel(); // 取得当前选择索引号
pRate->GetLBText(Index,str); // 根据选择,取得所选择项文本
pDoc->m_Rate=strtol(str,NULL, 10); // 将字符转换成数字
}
void CHistDataFrm::OnChangeEDITOffset()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CMDIChildWnd::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -