www.pudn.com > realtime.rar > RTDlg.cpp, change:2003-12-31,size:14264b


// RTDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "RTDemo.h" 
#include "RTDlg.h" 
#include "ChildFrm.h" 
#include "RTDemoDoc.h" 
#include "RTDemoView.h" 
 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CRTDlg dialog 
 
 
CRTDlg::CRTDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CRTDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CRTDlg) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
	m_pParent = pParent; 
} 
 
 
void CRTDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CRTDlg) 
	DDX_Control(pDX, IDC_LDELETENAME, m_LDeleteName); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CRTDlg, CDialog) 
	//{{AFX_MSG_MAP(CRTDlg) 
	ON_BN_CLICKED(IDC_BDELETE, OnBdelete) 
	ON_LBN_DBLCLK(IDC_LDELETENAME, OnDblclkLdeletename) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
void CRTDlg::ResetColorList() 
{ 
	CChildFrame* pWnd  = (CChildFrame*)m_pParent; 
	CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0); 
	int n = pView->m_Graph.m_LineArray.GetSize(); 
	for(int i = 0; i < n; i ++) 
		m_LDeleteName.AddString((LPCTSTR)i); 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// RTDlg message handlers 
 
void CRTDlg::OnBdelete()  
{ 
	CChildFrame* pWnd  = (CChildFrame*)m_pParent; 
	CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0); 
	int n = pView->m_Graph.m_LineArray.GetSize(); 
 
	int m = m_LDeleteName.GetCurSel(); 
	if (m < 0 || m >= n) 
		return; 
 
	CString str; 
	str.Format("Are you sure to delete <%s>", pView->m_Graph.m_LineArray[m].m_sName.GetChar()); 
	n = MessageBox(str, "Warning ...", MB_YESNO); 
	if (n == IDNO) 
		return; 
 
	pView->RemoveALine(m); 
	m_LDeleteName.ResetContent(); 
	ResetColorList(); 
 
	pView->RefreshGraph(); 
} 
 
BOOL CRTDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	ResetColorList(); 
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CRTDlg::OnDblclkLdeletename()  
{ 
	OnBdelete(); 
} 
///////////////////////////////////////////////////////////////////////////// 
// CModify dialog 
 
 
CModify::CModify(CWnd* pParent /*=NULL*/) 
	: CDialog(CModify::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CModify) 
	m_EMDesc = _T(""); 
	m_EMMax = 0.0; 
	m_EMMin = 0.0; 
	m_EMScaleMin = 0.0; 
	m_EMUnit = _T(""); 
	m_EMWidth = 0; 
	m_EMScaleMax = 0.0; 
	m_EMName = _T(""); 
	//}}AFX_DATA_INIT 
	m_pParent = pParent; 
} 
 
 
void CModify::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CModify) 
	DDX_Control(pDX, IDC_BAPPLY, m_BApply); 
	DDX_Control(pDX, IDC_SMWIDTH, m_SMWidth); 
	DDX_Control(pDX, IDC_CMSTYLE, m_CMStyle); 
	DDX_Control(pDX, IDC_CMNAME, m_CMName); 
	DDX_Control(pDX, IDC_BMCOLOR, m_BMColor); 
	DDX_Text(pDX, IDC_EMDESC, m_EMDesc); 
	DDV_MaxChars(pDX, m_EMDesc, 32); 
	DDX_Text(pDX, IDC_EMMAX, m_EMMax); 
	DDX_Text(pDX, IDC_EMMIN, m_EMMin); 
	DDX_Text(pDX, IDC_EMSCALEMIN, m_EMScaleMin); 
	DDV_MinMaxDouble(pDX, m_EMScaleMin, 0., 100.); 
	DDX_Text(pDX, IDC_EMUNIT, m_EMUnit); 
	DDV_MaxChars(pDX, m_EMUnit, 12); 
	DDX_Text(pDX, IDC_EMWIDTH, m_EMWidth); 
	DDV_MinMaxInt(pDX, m_EMWidth, 0, 5); 
	DDX_Text(pDX, IDC_EMSCALEMAX, m_EMScaleMax); 
	DDV_MinMaxDouble(pDX, m_EMScaleMax, 0., 100.); 
	DDX_Text(pDX, IDC_EMNAME, m_EMName); 
	DDV_MaxChars(pDX, m_EMName, 16); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CModify, CDialog) 
	//{{AFX_MSG_MAP(CModify) 
	ON_BN_CLICKED(IDC_BMCOLOR, OnBmcolor) 
	ON_CBN_SELCHANGE(IDC_CMNAME, OnSelchangeCmname) 
	ON_CBN_SELCHANGE(IDC_CMSTYLE, OnSelchangeCmstyle) 
	ON_BN_CLICKED(IDC_BAPPLY, OnBapply) 
	ON_EN_CHANGE(IDC_EMNAME, OnChangeEmname) 
	ON_EN_CHANGE(IDC_EMDESC, OnChangeEmdesc) 
	ON_EN_CHANGE(IDC_EMUNIT, OnChangeEmunit) 
	ON_EN_CHANGE(IDC_EMWIDTH, OnChangeEmwidth) 
	ON_EN_CHANGE(IDC_EMMIN, OnChangeEmmin) 
	ON_EN_CHANGE(IDC_EMMAX, OnChangeEmmax) 
	ON_EN_CHANGE(IDC_EMSCALEMIN, OnChangeEmscalemin) 
	ON_EN_CHANGE(IDC_EMSCALEMAX, OnChangeEmscalemax) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CModify message handlers 
 
void CModify::OnBmcolor()  
{ 
	CColorDialog crDlg; 
	 
	if (crDlg.DoModal() == IDOK) 
	{ 
		m_nColor = crDlg.GetColor(); 
		m_BMColor.SetColor(m_nColor); 
		m_BApply.EnableWindow(); 
	} 
} 
 
void CModify::SaveLine(int i) 
{ 
	CChildFrame* pWnd  = (CChildFrame*)m_pParent; 
	CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0); 
 
	UpdateData(); 
	pView->m_Graph.m_LineArray[i].m_dMin	 	 = m_EMMin; 
	pView->m_Graph.m_LineArray[i].m_dMax		 = m_EMMax; 
	pView->m_Graph.m_LineArray[i].m_dScaleLow    = m_EMScaleMin; 
	pView->m_Graph.m_LineArray[i].m_dScaleHigh   = m_EMScaleMax; 
	pView->m_Graph.m_LineArray[i].m_sDescription = (const char*)m_EMDesc; 
	pView->m_Graph.m_LineArray[i].m_sUnit		 = (const char*)m_EMUnit; 
	pView->m_Graph.m_LineArray[i].m_sName		 = (const char*)m_EMName; 
	pView->m_Graph.m_LineArray[i].m_nColor		 = m_nColor; 
	pView->m_Graph.m_LineArray[i].m_nLineWidth   = m_SMWidth.GetPos(); 
	pView->m_Graph.m_LineArray[i].m_nLineStyle   = m_CMStyle.GetCurSel(); 
	UpdateData(FALSE); 
 
	pView->SaveAModifiedLine(); 
} 
 
void CModify::OnSelchangeCmname()  
{ 
	CChildFrame* pWnd  = (CChildFrame*)m_pParent; 
	CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0); 
	int n = pView->m_Graph.m_LineArray.GetSize(); 
 
	int m = m_CMName.GetCurSel(); 
	if (m < 0 || m >= n) 
		return; 
 
	if (m_BApply.IsWindowEnabled()) 
	{ 
		n = MessageBox("Save changes for <" + (CString)pView->m_Graph.m_LineArray[m_nIndex].m_sName.GetChar() + "> ?",  
						AfxGetAppName(), MB_YESNO); 
		if (n == IDYES) 
		{ 
			SaveLine(m_nIndex); 
		} 
	} 
 
	Reset(m);	 
} 
 
void CModify::OnSelchangeCmstyle()  
{ 
	int m = m_CMStyle.GetCurSel(); 
	if (m < 0 || m > 2) 
		return; 
 
	if (m > 0) 
		m_SMWidth.SetPos(0); 
	UpdateData(); 
	UpdateData(FALSE); 
	m_BApply.EnableWindow(); 
} 
 
void CModify::Reset(int i) 
{ 
	CChildFrame* pWnd  = (CChildFrame*)m_pParent; 
	CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0); 
 
	m_nIndex	 = i; 
	m_EMMin		 = pView->m_Graph.m_LineArray[i].m_dMin; 
	m_EMMax		 = pView->m_Graph.m_LineArray[i].m_dMax; 
	m_EMScaleMin = pView->m_Graph.m_LineArray[i].m_dScaleLow; 
	m_EMScaleMax = pView->m_Graph.m_LineArray[i].m_dScaleHigh; 
	m_EMName	 = pView->m_Graph.m_LineArray[i].m_sName.GetChar(); 
	m_EMDesc	 = pView->m_Graph.m_LineArray[i].m_sDescription.GetChar(); 
	m_EMUnit	 = pView->m_Graph.m_LineArray[i].m_sUnit.GetChar(); 
	m_CMName.SetCurSel(i); 
	m_CMStyle.SetCurSel(pView->m_Graph.m_LineArray[i].m_nLineStyle); 
	UpdateData(FALSE); 
	m_SMWidth.SetPos(pView->m_Graph.m_LineArray[i].m_nLineWidth); 
	m_nColor = pView->m_Graph.m_LineArray[i].m_nColor; 
	m_BMColor.SetColor(m_nColor); 
	m_BApply.EnableWindow(FALSE); 
} 
 
BOOL CModify::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	CChildFrame* pWnd  = (CChildFrame*)m_pParent; 
	CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0); 
	int n = pView->m_Graph.m_LineArray.GetSize(); 
	if (n == 0) 
		return FALSE; 
 
	for(int i = 0; i < n; i ++) 
		m_CMName.AddString(pView->m_Graph.m_LineArray[i].m_sName.GetChar()); 
 
	m_SMWidth.SetRange(0, 5); 
	Reset(0); 
 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CModify::OnBapply()  
{ 
	SaveLine(m_nIndex); 
	m_BApply.EnableWindow(FALSE); 
} 
 
void CModify::OnChangeEmname()  
{ 
	UpdateData(); 
	m_CMName.InsertString(m_nIndex, (LPCTSTR)m_EMName); 
	m_CMName.DeleteString(m_nIndex + 1); 
	m_CMName.SetCurSel(m_nIndex); 
	UpdateData(FALSE); 
	m_BApply.EnableWindow(); 
} 
 
void CModify::OnChangeEmdesc()  
{ 
	m_BApply.EnableWindow(); 
} 
 
void CModify::OnChangeEmunit()  
{ 
	m_BApply.EnableWindow(); 
} 
 
void CModify::OnChangeEmwidth()  
{ 
	if (::IsWindow(m_BApply.m_hWnd)) 
	{ 
		m_BApply.EnableWindow(); 
 
		UpdateData(); 
		if (m_SMWidth.GetPos() > 1) 
			m_CMStyle.SetCurSel(0); 
		UpdateData(FALSE); 
	} 
} 
 
void CModify::OnChangeEmmin()  
{ 
	m_BApply.EnableWindow(); 
} 
 
void CModify::OnChangeEmmax()  
{ 
	m_BApply.EnableWindow(); 
} 
 
void CModify::OnChangeEmscalemin()  
{ 
	m_BApply.EnableWindow(); 
} 
 
void CModify::OnChangeEmscalemax()  
{ 
	m_BApply.EnableWindow(); 
} 
 
void CModify::OnCancel()  
{ 
	CChildFrame* pWnd  = (CChildFrame*)m_pParent; 
	CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0); 
	if (m_BApply.IsWindowEnabled()) 
	{ 
		int n = MessageBox("Save changes for <" + (CString)pView->m_Graph.m_LineArray[m_nIndex].m_sName.GetChar() + "> ?",  
						AfxGetAppName(), MB_YESNO); 
		if (n == IDYES) 
		{ 
			SaveLine(m_nIndex); 
		} 
	} 
	 
	CDialog::OnCancel(); 
} 
///////////////////////////////////////////////////////////////////////////// 
// CInsert dialog 
 
 
CInsert::CInsert(CWnd* pParent /*=NULL*/) 
	: CDialog(CInsert::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CInsert) 
	m_EIDesc = _T(""); 
	m_EIIndex = 0; 
	m_EIMax = 0.0; 
	m_EIMin = 0.0; 
	m_EIName = _T(""); 
	m_EIScaledMax = 0.0; 
	m_EIScaledMin = 0.0; 
	m_EIUnit = _T(""); 
	m_EIWidth = 0; 
	//}}AFX_DATA_INIT 
	m_pParent = pParent; 
} 
 
 
void CInsert::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CInsert) 
	DDX_Control(pDX, IDC_BIAPPLY, m_BIApply); 
	DDX_Control(pDX, IDC_SIWIDTH, m_SIWidth); 
	DDX_Control(pDX, IDC_SIINDEX, m_SIIndex); 
	DDX_Control(pDX, IDC_CISTYLE, m_CIStyle); 
	DDX_Control(pDX, IDC_BICOLOR, m_BIColor); 
	DDX_Text(pDX, IDC_EIDESCRIPTION, m_EIDesc); 
	DDV_MaxChars(pDX, m_EIDesc, 32); 
	DDX_Text(pDX, IDC_EIINDEX, m_EIIndex); 
	DDV_MinMaxInt(pDX, m_EIIndex, 0, 20); 
	DDX_Text(pDX, IDC_EIMAX, m_EIMax); 
	DDX_Text(pDX, IDC_EIMIN, m_EIMin); 
	DDX_Text(pDX, IDC_EIName, m_EIName); 
	DDV_MaxChars(pDX, m_EIName, 16); 
	DDX_Text(pDX, IDC_EISCALEDMAX, m_EIScaledMax); 
	DDV_MinMaxDouble(pDX, m_EIScaledMax, 0., 100.); 
	DDX_Text(pDX, IDC_EISCALEDMIN, m_EIScaledMin); 
	DDV_MinMaxDouble(pDX, m_EIScaledMin, 0., 100.); 
	DDX_Text(pDX, IDC_EIUNIT, m_EIUnit); 
	DDV_MaxChars(pDX, m_EIUnit, 8); 
	DDX_Text(pDX, IDC_EIWIDTH, m_EIWidth); 
	DDV_MinMaxInt(pDX, m_EIWidth, 0, 5); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CInsert, CDialog) 
	//{{AFX_MSG_MAP(CInsert) 
	ON_BN_CLICKED(IDC_BICOLOR, OnBicolor) 
	ON_CBN_SELCHANGE(IDC_CISTYLE, OnSelchangeCistyle) 
	ON_BN_CLICKED(IDC_BIAPPLY, OnBiapply) 
	ON_EN_CHANGE(IDC_EIWIDTH, OnChangeEiwidth) 
	ON_EN_CHANGE(IDC_EIUNIT, OnChangeEiunit) 
	ON_EN_CHANGE(IDC_EISCALEDMIN, OnChangeEiscaledmin) 
	ON_EN_CHANGE(IDC_EISCALEDMAX, OnChangeEiscaledmax) 
	ON_EN_CHANGE(IDC_EIName, OnChangeEIName) 
	ON_EN_CHANGE(IDC_EIMIN, OnChangeEimin) 
	ON_EN_CHANGE(IDC_EIMAX, OnChangeEimax) 
	ON_EN_CHANGE(IDC_EIINDEX, OnChangeEiindex) 
	ON_EN_CHANGE(IDC_EIDESCRIPTION, OnChangeEidescription) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CInsert message handlers 
 
void CInsert::OnBicolor()  
{ 
	CColorDialog crDlg; 
	 
	if (crDlg.DoModal() == IDOK) 
	{ 
		m_nColor = crDlg.GetColor(); 
		m_BIColor.SetColor(m_nColor); 
	} 
} 
 
void CInsert::OnSelchangeCistyle()  
{ 
	int m = m_CIStyle.GetCurSel(); 
	if (m < 0 || m > 2) 
		return; 
 
	if (m > 0) 
		m_SIWidth.SetPos(0); 
	UpdateData(); 
	UpdateData(FALSE); 
	m_BIApply.EnableWindow(); 
} 
 
BOOL CInsert::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	CChildFrame* pWnd  = (CChildFrame*)m_pParent; 
	CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0); 
	int n = pView->m_Graph.m_LineArray.GetSize(); 
 
	m_CIStyle.SetCurSel(0); 
	m_SIIndex.SetRange(1, n + 1); 
	m_SIWidth.SetRange(0, 5); 
	m_SIIndex.SetPos(n + 1); 
	m_SIWidth.SetPos(0); 
	m_BIApply.EnableWindow(FALSE); 
 
	m_EIName	  = "Type name here"; 
	m_EIDesc	  = "Type description here"; 
	m_EIUnit	  = "N/A"; 
	m_EIMin		  = 0; 
	m_EIMax		  = 100; 
	m_EIScaledMin = 0; 
	m_EIScaledMax = 100; 
 
	UpdateData(FALSE); 
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CInsert::OnBiapply()  
{ 
	InsertALine(); 
} 
 
void CInsert::InsertALine() 
{ 
	CChildFrame* pWnd  = (CChildFrame*)m_pParent; 
	CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0); 
 
	UpdateData(); 
	int i = m_SIIndex.GetPos() - 1; 
 
	if (pView->InsertALine(i, m_BIColor.GetColor(), m_EIScaledMin, m_EIScaledMax,  
						  (const char*)m_EIName, (const char*)m_EIDesc, (const char*)m_EIUnit,  
					       m_EIMin, m_EIMax, m_CIStyle.GetCurSel(), m_SIWidth.GetPos())) 
	{ 
		int lower, upper; 
		m_SIIndex.GetRange(lower, upper); 
		m_SIIndex.SetRange(lower, upper + 1);  
		UpdateData(FALSE); 
		m_BIApply.EnableWindow(FALSE); 
		pView->RefreshGraph(); 
	} 
	else 
		MessageBox("Insert a line failed !!!"); 
} 
 
void CInsert::OnCancel()  
{ 
	CChildFrame* pWnd  = (CChildFrame*)m_pParent; 
	CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0); 
	if (m_BIApply.IsWindowEnabled()) 
	{ 
		UpdateData(); 
		int n = MessageBox("Save changes for <" + m_EIName + "> ?",  
						AfxGetAppName(), MB_YESNO); 
		if (n == IDYES) 
		{ 
			InsertALine(); 
		} 
	} 
	 
	CDialog::OnCancel(); 
} 
 
void CInsert::OnChangeEiwidth()  
{ 
	if (::IsWindow(m_BIApply.m_hWnd)) 
	{ 
		m_BIApply.EnableWindow(); 
 
		UpdateData(); 
		if (m_SIWidth.GetPos() > 1) 
			m_CIStyle.SetCurSel(0); 
		UpdateData(FALSE); 
	} 
} 
 
void CInsert::OnChangeEiunit()  
{ 
	m_BIApply.EnableWindow(); 
} 
 
void CInsert::OnChangeEiscaledmin()  
{ 
	m_BIApply.EnableWindow(); 
} 
 
void CInsert::OnChangeEiscaledmax()  
{ 
	m_BIApply.EnableWindow(); 
} 
 
void CInsert::OnChangeEIName()  
{ 
	m_BIApply.EnableWindow(); 
} 
 
void CInsert::OnChangeEimin()  
{ 
	m_BIApply.EnableWindow(); 
} 
 
void CInsert::OnChangeEimax()  
{ 
	m_BIApply.EnableWindow(); 
} 
 
void CInsert::OnChangeEiindex()  
{ 
	if (::IsWindow(m_BIApply.m_hWnd)) 
		m_BIApply.EnableWindow(); 
} 
 
void CInsert::OnChangeEidescription()  
{ 
	m_BIApply.EnableWindow(); 
}