编程论坛's Archiver

gwhlzy 发表于 2008-5-21 17:14

求高手帮忙 读下这程序写的什么意思 要详细点 很着急!!!

// ControlDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "Ini.h"
#include "House.h"
#include "Const.h"
#include "Execute.h"
#include "hothouse.h"
#include "ControlDlg.h"
#include ".\controldlg.h"

extern CHouse House[NUM_OF_ALL_HOUSES];
extern CExecute Execute;
extern int curID;

// CControlDlg 对话框

IMPLEMENT_DYNAMIC(CControlDlg, CDialog)
CControlDlg::CControlDlg(CWnd* pParent /*=NULL*/)
        : CDialog(CControlDlg::IDD, pParent)
        , m_nDrop(0)
        , m_nSulfur(0)
        , m_nDelay(0)
        , m_nRepetition(0)
        , m_nIWZYOn(0)
        , m_nIWZYOff(0)
        , m_nTNBWOn(0)
        , m_nTNBWOff(0)
        , m_nWWZYOff(0)
        , m_nWTCOff(0)
        , m_nWCCOff(0)
{
}

CControlDlg::~CControlDlg()
{
}

void CControlDlg::DoDataExchange(CDataExchange* pDX)
{
        CDialog::DoDataExchange(pDX);
        DDX_Text(pDX, IDC_EDIT_DROP, m_nDrop);
        DDV_MinMaxInt(pDX, m_nDrop, 0, 1000);
        DDX_Text(pDX, IDC_EDIT_SULFUR, m_nSulfur);
        DDV_MinMaxInt(pDX, m_nSulfur, 0, 1000);
        DDX_Text(pDX, IDC_EDIT_DELAY, m_nDelay);
        DDV_MinMaxInt(pDX, m_nDelay, 0, 1000);
        DDX_Text(pDX, IDC_EDIT_REPETITION, m_nRepetition);
        DDV_MinMaxInt(pDX, m_nRepetition, 1, 100);
        DDX_Text(pDX, IDC_EDIT_IWZYON, m_nIWZYOn);
        DDV_MinMaxInt(pDX, m_nIWZYOn, 0, 100000);
        DDX_Text(pDX, IDC_EDIT_IWZYOFF, m_nIWZYOff);
        DDV_MinMaxInt(pDX, m_nIWZYOff, 0, 100000);
        DDX_Text(pDX, IDC_EDIT_TNBWON, m_nTNBWOn);
        DDV_MinMaxInt(pDX, m_nTNBWOn, -50, 50);
        DDX_Text(pDX, IDC_EDIT_TNBWOFF, m_nTNBWOff);
        DDV_MinMaxInt(pDX, m_nTNBWOff, -50, 50);
        DDX_Text(pDX, IDC_EDIT_WWZYOFF, m_nWWZYOff);
        DDV_MinMaxInt(pDX, m_nWWZYOff, 1, 12);
        DDX_Text(pDX, IDC_EDIT_WTCOFF, m_nWTCOff);
        DDV_MinMaxInt(pDX, m_nWTCOff, 1, 12);
        DDX_Text(pDX, IDC_EDIT_WCCOFF, m_nWCCOff);
        DDV_MinMaxInt(pDX, m_nWCCOff, 1, 12);
        DDX_Control(pDX, IDC_COMBO_RTCOFF, m_ccbRTCOff);
        DDX_Control(pDX, IDC_COMBO_RCCOFF, m_ccbRCCOff);
}


BEGIN_MESSAGE_MAP(CControlDlg, CDialog)
        ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()


// CControlDlg 消息处理程序

BOOL CControlDlg::OnInitDialog()
{
        CDialog::OnInitDialog();

        m_nDrop = House[curID].m_nDropTime;
        m_nSulfur = House[curID].m_nSulfurTime;
        m_nDelay = House[curID].m_nDelay;
        m_nRepetition = House[curID].m_nRepetition;
        m_nIWZYOn = House[curID].m_nIWZYOn;
        m_nIWZYOff = House[curID].m_nIWZYOff;
        m_nTNBWOn = House[curID].m_nTNBWOn;
        m_nTNBWOff = House[curID].m_nTNBWOff;
        m_nWWZYOff = House[curID].m_nWWZYOff;
        m_nWTCOff = House[curID].m_nWTCOff;
        m_nWCCOff = House[curID].m_nWCCOff;
        m_ccbRTCOff.InsertString(0, "晴");
        m_ccbRTCOff.InsertString(1, "毛毛雨");
        m_ccbRTCOff.InsertString(2, "小雨");
        m_ccbRTCOff.InsertString(3, "中雨");
        m_ccbRTCOff.InsertString(4, "大雨");
        m_ccbRTCOff.InsertString(5, "暴雨");
        m_ccbRCCOff.InsertString(0, "晴");
        m_ccbRCCOff.InsertString(1, "毛毛雨");
        m_ccbRCCOff.InsertString(2, "小雨");
        m_ccbRCCOff.InsertString(3, "中雨");
        m_ccbRCCOff.InsertString(4, "大雨");
        m_ccbRCCOff.InsertString(5, "暴雨");
        m_ccbRTCOff.SetCurSel(House[curID].m_nRTCOff);
        m_ccbRCCOff.SetCurSel(House[curID].m_nRCCOff);
        UpdateData(FALSE);
        return TRUE;  // return TRUE unless you set the focus to a control
        // 异常: OCX 属性页应返回 FALSE
}

void CControlDlg::OnBnClickedOk()
{
        UpdateData(TRUE);
        CStdioFile File;
        CString buf;
        char pathname[1024];
        memset(pathname, 0, 1024);
        CIni Ini;
        ::GetCurrentDirectory(1024, pathname);
        strcat(pathname, HOUSE_CONF);
        buf.Format("%02d", curID);
        strcat(pathname, buf);
        strcat(pathname, ".cfg");
        Ini.SetPathName(pathname);
        Ini.WriteInt("控制", "滴灌开启时间", m_nDrop);
        Ini.WriteInt("控制", "硫磺熏蒸器开启时间", m_nSulfur);
        Ini.WriteInt("控制", "延迟时间", m_nDelay);
        Ini.WriteInt("控制", "循环次数", m_nRepetition);
        Ini.WriteInt("标准值", "开外遮阳光照", m_nIWZYOn);
        Ini.WriteInt("标准值", "关外遮阳光照", m_nIWZYOff);
        Ini.WriteInt("标准值", "开内保温温度", m_nTNBWOn);
        Ini.WriteInt("标准值", "关内保温温度", m_nTNBWOff);
        Ini.WriteInt("标准值", "关外遮阳风级", m_nWWZYOff);
        Ini.WriteInt("标准值", "关天窗风级", m_nWTCOff);
        Ini.WriteInt("标准值", "关侧窗风级", m_nWCCOff);
        Ini.WriteInt("标准值", "关天窗雨量", m_ccbRTCOff.GetCurSel());
        Ini.WriteInt("标准值", "关侧窗雨量", m_ccbRCCOff.GetCurSel());
        House[curID].m_nDropTime = m_nDrop;
        House[curID].m_nSulfurTime = m_nSulfur;
        House[curID].m_nDelay = m_nDelay;
        House[curID].m_nRepetition = m_nRepetition;
        House[curID].m_nIWZYOn = m_nIWZYOn;
        House[curID].m_nIWZYOff = m_nIWZYOff;
        House[curID].m_nTNBWOn = m_nTNBWOn;
        House[curID].m_nTNBWOff = m_nTNBWOff;
        House[curID].m_nWWZYOff = m_nWWZYOff;
        House[curID].m_nWTCOff = m_nWTCOff;
        House[curID].m_nWCCOff = m_nWCCOff;
        House[curID].m_nRTCOff = m_ccbRTCOff.GetCurSel();
        House[curID].m_nRCCOff = m_ccbRCCOff.GetCurSel();

        LPSERIALTASK pTask = new SERIALTASK;
        pTask->nFlags = EX_SET | EX_PARAMETER;
        UINT nIndex = Execute.m_pTaskArr.GetSize();
        Execute.m_pTaskArr.InsertAt(nIndex, pTask);
        OnOK();
}

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.