⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 histdatafrm.cpp

📁 AD 数据采集卡基本的采集界面
💻 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 + -