dlgyxpara.cpp

来自「串口收发工具」· C++ 代码 · 共 227 行

CPP
227
字号
// DlgYxPara.cpp : implementation file
//

#include "stdafx.h"
#include "maintain.h"
#include "DlgYxPara.h"
#include "mainfrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgYxPara property page

IMPLEMENT_DYNCREATE(CDlgYxPara, CPropertyPage)

CDlgYxPara::CDlgYxPara() : CPropertyPage(CDlgYxPara::IDD)
{
	//{{AFX_DATA_INIT(CDlgYxPara)
	m_Com1 = FALSE;
	m_Com2 = FALSE;
	m_Com3 = FALSE;
	m_Point1Allow = FALSE;
	m_Point2Allow = FALSE;
	m_YxName = _T("");
	m_Point1 = 0;
	m_Point2 = 0;
	m_ActionAlarm = -1;
	//}}AFX_DATA_INIT
}

CDlgYxPara::~CDlgYxPara()
{
}

void CDlgYxPara::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgYxPara)
	DDX_Control(pDX, IDC_COMBO_YX_NO, m_YxNo);
	DDX_Check(pDX, IDC_CHECK_COM1, m_Com1);
	DDX_Check(pDX, IDC_CHECK_COM2, m_Com2);
	DDX_Check(pDX, IDC_CHECK_COM3, m_Com3);
	DDX_Check(pDX, IDC_CHECK_POINT_ALLOW, m_Point1Allow);
	DDX_Check(pDX, IDC_CHECK_POINT1_ALLOW, m_Point2Allow);
	DDX_Text(pDX, IDC_EDIT_YX_NAME, m_YxName);
	DDV_MaxChars(pDX, m_YxName, 17);
	DDX_Text(pDX, IDC_EDIT_POINT1, m_Point1);
	DDV_MinMaxInt(pDX, m_Point1, 0, 9999);
	DDX_Text(pDX, IDC_EDIT_POINT2, m_Point2);
	DDV_MinMaxInt(pDX, m_Point2, 0, 9999);
	DDX_Radio(pDX, IDC_RADIO_ACTION_ALARM, m_ActionAlarm);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgYxPara, CPropertyPage)
	//{{AFX_MSG_MAP(CDlgYxPara)
	ON_CBN_SELENDOK(IDC_COMBO_YX_NO, OnSelendokComboYxNo)
	ON_EN_CHANGE(IDC_EDIT_YX_NAME, OnChangeEditYxName)
	ON_BN_CLICKED(IDC_RADIO_ACTION_ALARM, OnRadioActionAlarm)
	ON_BN_CLICKED(IDC_RADIO_STATUS_ALARM, OnRadioStatusAlarm)
	ON_EN_CHANGE(IDC_EDIT_POINT1, OnChangeEditPoint1)
	ON_EN_CHANGE(IDC_EDIT_POINT2, OnChangeEditPoint2)
	ON_BN_CLICKED(IDC_CHECK_POINT1_ALLOW, OnCheckPoint1Allow)
	ON_BN_CLICKED(IDC_CHECK_POINT_ALLOW, OnCheckPointAllow)
	ON_BN_CLICKED(IDC_CHECK_COM1, OnCheckCom1)
	ON_BN_CLICKED(IDC_CHECK_COM2, OnCheckCom2)
	ON_BN_CLICKED(IDC_CHECK_COM3, OnCheckCom3)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgYxPara message handlers

BOOL CDlgYxPara::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	// TODO: Add extra initialization here
	CString str;
	for(int i=1;i<YXCOE_COUNT;i++)
	{
		str.Format("%d",i);
		m_YxNo.AddString(str);
	}
	((CMainFrame*)AfxGetMainWnd())->GetPara(p);
	m_YxNo.SetCurSel(0);
	RefreshData();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgYxPara::OnSelendokComboYxNo() 
{
	// TODO: Add your control notification handler code here
	RefreshData();
}

void CDlgYxPara::RefreshData()
{
	int nCurSel = m_YxNo.GetCurSel();
	m_YxName = p.YX_Coe[nCurSel].Name;
	m_Point1 = p.YX_Coe[nCurSel].OnPtr;
	m_Point2 = p.YX_Coe[nCurSel].OffPtr;
	m_Com1 = (p.YX_Coe[nCurSel].Control&0x01)?true:false;
	m_Com2 =( p.YX_Coe[nCurSel].Control&0x02)?true:false;
	m_Com3 = (p.YX_Coe[nCurSel].Control&0x04)?true:false;
	m_ActionAlarm = (p.YX_Coe[nCurSel].Control&0x08)?true:false;
	m_Point1Allow = (p.YX_Coe[nCurSel].Control&0x80)?true:false;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT1))->EnableWindow(m_Point1Allow);
	m_Point2Allow = (p.YX_Coe[nCurSel].Control&0x40)?true:false;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT2))->EnableWindow(m_Point2Allow);
	UpdateData(false);
}

void CDlgYxPara::OnChangeEditYxName() 
{
	UpdateData(true);
	int nCurSel = m_YxNo.GetCurSel();
	strcpy(p.YX_Coe[nCurSel].Name,m_YxName);
	SETPARA
}

void CDlgYxPara::OnRadioActionAlarm() 
{
	UpdateData(true);
	int nCurSel = m_YxNo.GetCurSel();
	p.YX_Coe[nCurSel].Control &= 0xF7;
	SETPARA
}

void CDlgYxPara::OnRadioStatusAlarm() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int nCurSel = m_YxNo.GetCurSel();
	p.YX_Coe[nCurSel].Control |= 0x08;
	SETPARA
}

void CDlgYxPara::OnChangeEditPoint1() 
{
	UpdateData(true);

		int nCurSel = m_YxNo.GetCurSel();
		p.YX_Coe[nCurSel].OnPtr = m_Point1;
	
	SETPARA
}

void CDlgYxPara::OnChangeEditPoint2() 
{
	UpdateData(true);
	
		int nCurSel = m_YxNo.GetCurSel();
		p.YX_Coe[nCurSel].OffPtr = m_Point2;
	
	SETPARA
}

void CDlgYxPara::OnCheckPoint1Allow() 
{
	// TODO: Add your control notification handler code here
	
	int nCurSel = m_YxNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_POINT1_ALLOW)))->GetCheck();
	if(check)
		p.YX_Coe[nCurSel].Control |= 0x40;
	else
		p.YX_Coe[nCurSel].Control &= 0xBF;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT2))->EnableWindow(check);
	SETPARA
}

void CDlgYxPara::OnCheckPointAllow() 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_YxNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_POINT_ALLOW)))->GetCheck();
	if(check)
		p.YX_Coe[nCurSel].Control |= 0x80;
	else
		p.YX_Coe[nCurSel].Control &= 0x7F;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT1))->EnableWindow(check);
	SETPARA
}

void CDlgYxPara::OnCheckCom1() 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_YxNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_COM1)))->GetCheck();
	if(check)
		p.YX_Coe[nCurSel].Control |= 0x01;
	else
		p.YX_Coe[nCurSel].Control &= 0xFE;
	SETPARA
}

void CDlgYxPara::OnCheckCom2() 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_YxNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_COM2)))->GetCheck();
	if(check)
		p.YX_Coe[nCurSel].Control |= 0x02;
	else
		p.YX_Coe[nCurSel].Control &= 0xFD;
	SETPARA
}

void CDlgYxPara::OnCheckCom3() 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_YxNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_COM3)))->GetCheck();
	if(check)
		p.YX_Coe[nCurSel].Control |= 0x04;
	else
		p.YX_Coe[nCurSel].Control &= 0xFB;
	SETPARA
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?