📄 historydlg.cpp
字号:
// HistoryDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "Temperature.h"
#include "HistoryDlg.h"
#include "DeviceClient.h"
#include "ExportFile.h"
// CHistoryDlg 对话框
IMPLEMENT_DYNAMIC(CHistoryDlg, CDialog)
CHistoryDlg::CHistoryDlg(CWnd* pParent /*=NULL*/)
: CDialog(CHistoryDlg::IDD, pParent)
, m_static1(_T(""))
, m_static2(_T(""))
, m_static3(_T(""))
, m_static4(_T(""))
, m_static5(_T(""))
, m_TemperatureCount(0)
, m_CheckTimeInterval(1)
, m_WarnTemp1( 25.0 )
, m_WarnTemp2( -60.0 )
, m_IsCheck(FALSE)
{
}
CHistoryDlg::~CHistoryDlg()
{
}
void CHistoryDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_STATIC1, m_static1);
DDX_Text(pDX, IDC_STATIC2, m_static2);
DDX_Text(pDX, IDC_STATIC3, m_static3);
DDX_Text(pDX, IDC_STATIC4, m_static4);
DDX_Text(pDX, IDC_STATIC5, m_static5);
DDX_Control(pDX, IDC_LIST1, m_list);
DDX_Check(pDX, IDC_CHECK_OUT, m_IsCheck);
}
BEGIN_MESSAGE_MAP(CHistoryDlg, CDialog)
ON_STN_CLICKED(IDC_STATIC2, &CHistoryDlg::OnStnClickedStatic2)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &CHistoryDlg::OnLvnItemchangedList1)
ON_BN_CLICKED(IDC_CHECK_OUT, &CHistoryDlg::OnBnClickedCheckOut)
ON_BN_CLICKED(IDC_BTN_EXPORT, &CHistoryDlg::OnBnClickedBtnExport)
END_MESSAGE_MAP()
// CHistoryDlg 消息处理程序
void CHistoryDlg::OnStnClickedStatic2()
{
// TODO: 在此添加控件通知处理程序代码
}
BOOL CHistoryDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if( theApp.m_Lang == 0 )
{
SetWindowText( _T("历史") );
}
SetLang( theApp.m_Lang );
UINT nIndex = IDS_STR_HISTORY_INDEX;
UINT nValue = IDS_STR_HISTORY_VALUE;
if( theApp.m_Lang == 0 )
{
nIndex = IDS_STR_HISTORY_INDEX_CH;
nValue = IDS_STR_HISTORY_VALUE_CH;
}
m_list.SetExtendedStyle( LVS_EX_FULLROWSELECT );
CString str;
str.LoadString( nIndex );
m_list.InsertColumn( 0, str, LVCFMT_LEFT, 120 );
str.LoadString( nValue );
m_list.InsertColumn( 1, str, LVCFMT_LEFT, 100 );
m_static3.Format( _T("%.2f"), m_HighTemperature );
m_static4.Format( _T("%.2f"), m_LowTemperature );
m_static5.Format( _T("%.2f"), m_SumTemperature / m_TemperatureCount );
InitList();
UpdateData( FALSE );
return TRUE;
}
void CHistoryDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
*pResult = 0;
}
void CHistoryDlg::InitList()
{
m_list.DeleteAllItems();
CTime StartTime( m_StartTime[0] + 2000, m_StartTime[1], m_StartTime[2], m_StartTime[3], m_StartTime[4], m_StartTime[5] );
CTimeSpan timeSpan( m_CheckTimeInterval );
int nItem = 0;
int nCurTemperature = m_StartTemperature;
_TCHAR ch[64];
_stprintf( ch, _T("%d/%02d/%02d %02d:%02d:%02d"), StartTime.GetYear(), StartTime.GetMonth(),
StartTime.GetDay(), StartTime.GetHour(), StartTime.GetMinute(),StartTime.GetSecond() );
if( ( m_IsCheck == 0 ) || ( m_pTemperatureArray[0] >= m_WarnTemp1 ) )
{
nItem = m_list.InsertItem( 0, ch );
m_static1 = ch;
_stprintf( ch, _T("%.2f"),m_pTemperatureArray[0] );
m_list.SetItemText( nItem, 1, ch );
}
for( unsigned int i=1; i<m_TemperatureCount - 1; i++ )
{
StartTime += timeSpan;
if( ( m_IsCheck == 0 ) || ( m_pTemperatureArray[i] >= m_WarnTemp1 ) )
{
_stprintf( ch, _T("%d/%02d/%02d %02d:%02d:%02d"), StartTime.GetYear(), StartTime.GetMonth(),
StartTime.GetDay(), StartTime.GetHour(), StartTime.GetMinute(),StartTime.GetSecond() );
nItem = m_list.InsertItem( i, ch );
_stprintf( ch, _T("%.2f"), m_pTemperatureArray[i] );
m_list.SetItemText( nItem, 1, ch );
}
}
_stprintf( ch, _T("%d/%02d/%02d %02d:%02d:%02d"), StartTime.GetYear(), StartTime.GetMonth(),
StartTime.GetDay(), StartTime.GetHour(), StartTime.GetMinute(),StartTime.GetSecond() );
m_static2 = ch;
}
void CHistoryDlg::OnBnClickedCheckOut()
{
m_IsCheck = !m_IsCheck;
UpdateData( TRUE );
InitList();
}
void CHistoryDlg::OnBnClickedBtnExport()
{
char ch[256];
CFileDialog dlg( FALSE, _T("csv") );
int nRet = dlg.DoModal();
if( nRet == 1 )
{
CString str = dlg.GetPathName();
TCHAR* lpStr = str.GetBuffer();
//WideCharToMultiByte(CP_ACP,0,lpStr,-1,ch,256,NULL,NULL);
strcpy( ch, lpStr );
CTime StartTime( m_StartTime[0] + 2000, m_StartTime[1], m_StartTime[2], m_StartTime[3], m_StartTime[4], m_StartTime[5] );
if( m_CheckTimeInterval > 0 )
{
CExportFile file;
file.OpenCreateFile( ch );
CTimeSpan timeSpan( m_CheckTimeInterval );
sprintf( ch, "%d-%d-%d %d:%d:%d", StartTime.GetYear(), StartTime.GetMonth(),
StartTime.GetDay(), StartTime.GetHour(), StartTime.GetMinute(),StartTime.GetSecond() );
file.AddItem( ch );
sprintf( ch, "%.2f",m_pTemperatureArray[0] );
file.AddItem( ch );
file.EnterLine();
for( unsigned int i=1; i<m_TemperatureCount - 1; i++ )
{
StartTime += timeSpan;
sprintf( ch, "%d-%d-%d %d:%d:%d", StartTime.GetYear(), StartTime.GetMonth(),
StartTime.GetDay(), StartTime.GetHour(), StartTime.GetMinute() ,StartTime.GetSecond() );
file.AddItem( ch );
sprintf( ch, "%.2f", m_pTemperatureArray[i] );
file.AddItem( ch );
file.EnterLine();
}
file.CloseFile();
}
}
}
void CHistoryDlg::SetLang(char ch)
{
if( ch == 0 )
{
CString str;
str.LoadString( IDS_STR_DIALOG_HISTORY_ST );
GetDlgItem( IDC_STATIC_STIME )->SetWindowText( str );
str.LoadString( IDS_STR_DIALOG_HISTORY_ET );
GetDlgItem( IDC_STATIC_ETIME )->SetWindowText( str );
str.LoadString( IDS_STR_DIALOG_HISTORY_HT );
GetDlgItem( IDC_STATIC_HT )->SetWindowText( str );
str.LoadString( IDS_STR_DIALOG_HISTORY_LT );
GetDlgItem( IDC_STATIC_LT )->SetWindowText( str );
str.LoadString( IDS_STR_DIALOG_HISTORY_AT );
GetDlgItem( IDC_STATIC_AT )->SetWindowText( str );
str.LoadString( IDS_STR_DIALOG_HISTORY_CHECK_OUT );
GetDlgItem( IDC_CHECK_OUT )->SetWindowText( str );
str.LoadString( IDS_STR_DIALOG_HISTORY_EXPORT );
GetDlgItem( IDC_BTN_EXPORT )->SetWindowText( str );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -