?? datashowview.cpp
字號:
// DataShowView.cpp : implementation file
//
#include "stdafx.h"
#include "VCStyle.h"
#include "DataShowView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "data.h"
/////////////////////////////////////////////////////////////////////////////
// CDataShowView
IMPLEMENT_DYNCREATE(CDataShowView, CFormView)
CDataShowView::CDataShowView()
: CFormView(CDataShowView::IDD)
{
//{{AFX_DATA_INIT(CDataShowView)
m_max = 0.0;
m_min = 0.0;
m_sOutput = _T("");
m_capmax1 = 0.0;
m_capmax2 = 0.0;
m_capmin1 = 0.0;
m_capmin2 = 0.0;
//}}AFX_DATA_INIT
m_bSave = FALSE;
}
CDataShowView::~CDataShowView()
{
}
void CDataShowView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDataShowView)
DDX_Control(pDX, IDC_BUTTON_SAVE, m_btnsave);
DDX_Control(pDX, IDC_EDIT_OUTPUT, m_eOut);
DDX_Control(pDX, IDC_LIST_DATA, m_list);
DDX_Control(pDX, IDC_YGRAPHCTRL1, m_graph);
DDX_Text(pDX, IDC_EDIT_MAX, m_max);
DDX_Text(pDX, IDC_EDIT_MIN, m_min);
DDX_Text(pDX, IDC_EDIT_OUTPUT, m_sOutput);
DDX_Text(pDX, IDC_EDIT_MAX1, m_capmax1);
DDX_Text(pDX, IDC_EDIT_MAX2, m_capmax2);
DDX_Text(pDX, IDC_EDIT_MIN1, m_capmin1);
DDX_Text(pDX, IDC_EDIT_MIN2, m_capmin2);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDataShowView, CFormView)
//{{AFX_MSG_MAP(CDataShowView)
ON_WM_CTLCOLOR()
ON_MESSAGE(WM_RECEIVEFRAME,OnReceiveFrame)
ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)
ON_BN_CLICKED(IDC_BUTTON_SETCAPTURE, OnButtonSetcapture)
ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDataShowView diagnostics
#ifdef _DEBUG
void CDataShowView::AssertValid() const
{
CFormView::AssertValid();
}
void CDataShowView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
CDataShowDoc *CDataShowView::GetDocument () // non-debug version is inline
{
ASSERT (m_pDocument->IsKindOf (RUNTIME_CLASS (CDataShowDoc)));
return (CDataShowDoc *) m_pDocument;
}
/////////////////////////////////////////////////////////////////////////////
// CDataShowView message handlers
void CDataShowView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
CDataShowDoc* pDoc = GetDocument();
//set source
// CDataShowDoc* pDoc = GetDocument();
m_graph.SetStyle(12);
m_graph.SetYMinMax(-1,1);
m_graph.SetCurveParam(1,MAX_LEN);
m_graph.SetData(0,&g_data[pDoc->m_addr][pDoc->m_ch][0]);
//List
m_list.InsertColumn(0,"值",LVCFMT_LEFT,100);
m_list.InsertColumn(1,"真實值",LVCFMT_LEFT,80);
m_list.InsertColumn(2,"誤差",LVCFMT_LEFT,80);
m_list.SetExtendedStyle(
m_list.GetExtendedStyle()|
LVS_EX_FULLROWSELECT|
LVS_EX_GRIDLINES);
m_list.SetBkColor(RGB(245,255,245));
// TODO: Add your specialized code here and/or call the base class
m_bkbrush.CreateSolidBrush(RGB(240,250,250));
}
HBRUSH CDataShowView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
return m_bkbrush;
}
LRESULT CDataShowView::OnReceiveFrame(WPARAM w,LPARAM l)
{
CDataShowDoc* pDoc = GetDocument();
if(g_data_new[pDoc->m_addr][pDoc->m_ch]){
g_data_new[pDoc->m_addr][pDoc->m_ch] = FALSE;
m_graph.Redraw();//更新歷史曲線
int nItem = m_list.GetItemCount();
if(nItem >= 1000){//如果太多則刪掉
m_list.DeleteAllItems();
nItem = 0;
}
double data = g_data[pDoc->m_addr][pDoc->m_ch][MAX_LEN-1];
CString s;
s.Format("%.3f",data);
m_list.InsertItem(nItem,s);
m_list.EnsureVisible(nItem,TRUE);
//save
if(m_bSave){
m_file.SeekToEnd();
CString t = s+'\t';
m_file.Write(t,t.GetLength());
}
//是否超出正常范圍
if((data>=m_capmin1 && data<=m_capmax1) ||
(data>=m_capmin2 && data<=m_capmax2)){
CTime tm;
tm = CTime::GetCurrentTime();
s += tm.Format("\t%H時%M分%S秒\r\n");
m_sOutput += s;
// UpdateData(FALSE);
m_eOut.SetWindowText(m_sOutput);
}
}
return 0;
}
void CDataShowView::OnButtonSet()
{
UpdateData();
m_graph.SetYMinMax(m_min,m_max);
//
m_graph.Redraw();
}
void CDataShowView::OnButtonSetcapture()
{
UpdateData();
}
void CDataShowView::OnButtonSave()
{
CString btntitle;
m_btnsave.GetWindowText(btntitle);
if( btntitle == _T("save") ){
CFileDialog dlg(FALSE);
if(dlg.DoModal() == IDOK){
m_file.Open(dlg.GetPathName(),CFile::modeWrite|CFile::modeCreate);
m_btnsave.SetWindowText("stop save");
m_bSave = TRUE;
}
}
else{
m_btnsave.SetWindowText("save");
m_bSave = FALSE;
m_file.Close();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -