// WaterTankCalcDlg.cpp : implementation file // #include "stdafx.h" #include "WaterTankCalcDlg.h" #include "SelWaterTankDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CWaterTankCalcDlg dialog void WaterTankCalc() { CTemporaryResourceOverride vTemp; CWaterTankCalcDlg dlg; dlg.DoModal(); } CWaterTankCalcDlg::CWaterTankCalcDlg(CWnd* pParent /*=NULL*/) : CDialog(CWaterTankCalcDlg::IDD, pParent) { //{{AFX_DATA_INIT(CWaterTankCalcDlg) m_iCalcMode = 0; m_iPurpose = 0; m_iRunMode = 0; m_csLive1 = _T(""); m_csLive2 = _T(""); m_csLive3 = _T(""); m_csLive4 = _T(""); m_csLiveVolume = _T(""); m_csFireQ = _T(""); m_csFireTime = _T(""); m_csLevel = _T("18"); m_csAllVolume = _T(""); m_csFireVolume = _T(""); //}}AFX_DATA_INIT } void CWaterTankCalcDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CWaterTankCalcDlg) DDX_Radio(pDX, IDC_RADIO_CALCMODE1, m_iCalcMode); DDX_Radio(pDX, IDC_RADIO_PURPOSE1, m_iPurpose); DDX_Radio(pDX, IDC_RADIO_RUNMODE1, m_iRunMode); DDX_Text(pDX, IDC_EDIT_LIVE_1, m_csLive1); DDX_Text(pDX, IDC_EDIT_LIVE_2, m_csLive2); DDX_Text(pDX, IDC_EDIT_LIVE_3, m_csLive3); DDX_Text(pDX, IDC_EDIT_LIVE_4, m_csLive4); DDX_Text(pDX, IDC_EDIT_LIVE_VOLUME, m_csLiveVolume); DDX_Text(pDX, IDC_EDIT_FIRE_Q, m_csFireQ); DDX_Text(pDX, IDC_EDIT_FIRE_TIME, m_csFireTime); DDX_CBString(pDX, IDC_COMBO_ARCH_LEVEL, m_csLevel); DDX_Text(pDX, IDC_EDIT_ALL_VOLUME, m_csAllVolume); DDX_Text(pDX, IDC_EDIT_FIRE_VOLUME, m_csFireVolume); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CWaterTankCalcDlg, CDialog) //{{AFX_MSG_MAP(CWaterTankCalcDlg) ON_BN_CLICKED(IDC_BUTTON_LEVEL, OnButtonLevel) ON_BN_CLICKED(IDC_RADIO_PURPOSE1, OnRadioPurpose1) ON_BN_CLICKED(IDC_RADIO_PURPOSE2, OnRadioPurpose2) ON_BN_CLICKED(IDC_RADIO_PURPOSE3, OnRadioPurpose3) ON_BN_CLICKED(IDC_RADIO_RUNMODE1, OnRadioRunmode1) ON_BN_CLICKED(IDC_RADIO_RUNMODE2, OnRadioRunmode2) ON_BN_CLICKED(IDC_RADIO_RUNMODE3, OnRadioRunmode3) ON_BN_CLICKED(IDC_RADIO_CALCMODE1, OnRadioCalcmode1) ON_BN_CLICKED(IDC_RADIO_CALCMODE2, OnRadioCalcmode2) ON_BN_CLICKED(IDC_BUTTON_CALC, OnButtonCalc) ON_BN_CLICKED(IDC_BUTTON_DWG_SERIES, OnButtonDwgSeries) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CWaterTankCalcDlg message handlers void CWaterTankCalcDlg::OnButtonLevel() { AfxMessageBox(_T("各类建筑屋顶消防水箱最小容积(立方米)!\n\n一类公共建筑最小18\n二类公共建筑和一类住宅建筑最小12\n二类住宅建筑最小6\n\n")); } BOOL CWaterTankCalcDlg::OnInitDialog() { CDialog::OnInitDialog(); Reset(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CWaterTankCalcDlg::OnButtonCalc() { UpdateData(); double nRet(0), nAllRet(0); if(m_iPurpose != 1){ if(m_iRunMode == 0){ //水泵自动 if(m_iCalcMode == 0){ //计算Vt=1.25Qb/4Nmax double nQb = _tstof(m_csLive2); double nNmax = _tstof(m_csLive1); if(nNmax <= 0) return; nRet = 1.25*nQb/(4*nNmax); m_csLiveVolume.Format(_T("%.2f"), nRet); } else if(m_iCalcMode == 1){ //估算Vt=(Q-Qb)T+QbTb double nQ = _tstof(m_csLive1); double nQb = _tstof(m_csLive2); double nT = _tstof(m_csLive3); double nTb = _tstof(m_csLive4); nRet = (nQ - nQb)*nT + nQb*nTb; m_csLiveVolume.Format(_T("%.2f"), nRet); } } else if(m_iRunMode == 1){ //水泵人工 公式:Qd/n-Tb×Qm double nQd = _tstof(m_csLive1); double nQm = _tstof(m_csLive2); double nTb = _tstof(m_csLive3); double nN = _tstof(m_csLive4); nRet = nQd/nN - nTb*nQm; m_csLiveVolume.Format(_T("%.2f"), nRet); } else if(m_iRunMode == 2){ //单设水箱 公式:Qm×T double nQm = _tstof(m_csLive1); double nT = _tstof(m_csLive2); nRet = nQm * nT; m_csLiveVolume.Format(_T("%.2f"), nRet); } } nAllRet = nRet; if(m_iPurpose != 0){ //公式:Vf=Qx×Tx×60/1000 double nQx = _tstof(m_csFireQ); double nTx = _tstof(m_csFireTime); nRet = nQx * nTx * 60 / 1000; double nLevel = _tstof(m_csLevel); if(nRet < nLevel) nRet = nLevel; m_csFireVolume.Format(_T("%.2f"), nRet); nAllRet += nRet; } m_csAllVolume.Format(_T("%.2f"), nAllRet); UpdateData(FALSE); } void CWaterTankCalcDlg::Reset() { UpdateData(); m_csLive1 = _T(""); m_csLive2 = _T(""); m_csLive3 = _T(""); m_csLive4 = _T(""); m_csLiveVolume = _T(""); CWnd *pWnd1 = GetDlgItem(IDC_STATIC_FIRE1); CWnd *pWnd2 = GetDlgItem(IDC_STATIC_FIRE2); CWnd *pWnd3 = GetDlgItem(IDC_EDIT_FIRE_Q); CWnd *pWnd4 = GetDlgItem(IDC_STATIC_FIRE3); CWnd *pWnd5 = GetDlgItem(IDC_EDIT_FIRE_TIME); CWnd *pWnd6 = GetDlgItem(IDC_BUTTON_LEVEL); CWnd *pWnd7 = GetDlgItem(IDC_COMBO_ARCH_LEVEL); CWnd *pWnd8 = GetDlgItem(IDC_STATIC_FIRE4); CWnd *pWnd9 = GetDlgItem(IDC_EDIT_FIRE_VOLUME); //生活 CWnd *pWnd10 = GetDlgItem(IDC_RADIO_CALCMODE1); CWnd *pWnd11 = GetDlgItem(IDC_RADIO_CALCMODE2); CWnd *pWnd12 = GetDlgItem(IDC_STATIC_FORMULA); CWnd *pWnd13 = GetDlgItem(IDC_STATIC_LIVE_1); CWnd *pWnd14 = GetDlgItem(IDC_STATIC_LIVE_2); CWnd *pWnd15 = GetDlgItem(IDC_STATIC_LIVE_3); CWnd *pWnd16 = GetDlgItem(IDC_STATIC_LIVE_4); CWnd *pWnd17 = GetDlgItem(IDC_STATIC_LIVE_5); CWnd *pWnd18 = GetDlgItem(IDC_EDIT_LIVE_1); CWnd *pWnd19 = GetDlgItem(IDC_EDIT_LIVE_2); CWnd *pWnd20 = GetDlgItem(IDC_EDIT_LIVE_3); CWnd *pWnd21 = GetDlgItem(IDC_EDIT_LIVE_4); CWnd *pWnd22 = GetDlgItem(IDC_EDIT_LIVE_VOLUME); if(m_iPurpose == 0){ pWnd1->EnableWindow(FALSE); pWnd2->EnableWindow(FALSE); pWnd3->EnableWindow(FALSE); pWnd4->EnableWindow(FALSE); pWnd5->EnableWindow(FALSE); pWnd6->EnableWindow(FALSE); pWnd7->EnableWindow(FALSE); pWnd8->EnableWindow(FALSE); pWnd9->EnableWindow(FALSE); pWnd10->EnableWindow(TRUE); pWnd11->EnableWindow(TRUE); pWnd12->EnableWindow(TRUE); pWnd13->EnableWindow(TRUE); pWnd14->EnableWindow(TRUE); pWnd15->EnableWindow(TRUE); pWnd16->EnableWindow(TRUE); pWnd17->EnableWindow(TRUE); pWnd18->EnableWindow(TRUE); pWnd19->EnableWindow(TRUE); pWnd20->EnableWindow(TRUE); pWnd21->EnableWindow(TRUE); pWnd22->EnableWindow(TRUE); } else if(m_iPurpose == 1){ pWnd1->EnableWindow(TRUE); pWnd2->EnableWindow(TRUE); pWnd3->EnableWindow(TRUE); pWnd4->EnableWindow(TRUE); pWnd5->EnableWindow(TRUE); pWnd6->EnableWindow(TRUE); pWnd7->EnableWindow(TRUE); pWnd8->EnableWindow(TRUE); pWnd9->EnableWindow(TRUE); pWnd10->EnableWindow(FALSE); pWnd11->EnableWindow(FALSE); pWnd12->EnableWindow(FALSE); pWnd13->EnableWindow(FALSE); pWnd14->EnableWindow(FALSE); pWnd15->EnableWindow(FALSE); pWnd16->EnableWindow(FALSE); pWnd17->EnableWindow(FALSE); pWnd18->EnableWindow(FALSE); pWnd19->EnableWindow(FALSE); pWnd20->EnableWindow(FALSE); pWnd21->EnableWindow(FALSE); pWnd22->EnableWindow(FALSE); } else if(m_iPurpose == 2){ pWnd1->EnableWindow(TRUE); pWnd2->EnableWindow(TRUE); pWnd3->EnableWindow(TRUE); pWnd4->EnableWindow(TRUE); pWnd5->EnableWindow(TRUE); pWnd6->EnableWindow(TRUE); pWnd7->EnableWindow(TRUE); pWnd8->EnableWindow(TRUE); pWnd9->EnableWindow(TRUE); pWnd10->EnableWindow(TRUE); pWnd11->EnableWindow(TRUE); pWnd12->EnableWindow(TRUE); pWnd13->EnableWindow(TRUE); pWnd14->EnableWindow(TRUE); pWnd15->EnableWindow(TRUE); pWnd16->EnableWindow(TRUE); pWnd17->EnableWindow(TRUE); pWnd18->EnableWindow(TRUE); pWnd19->EnableWindow(TRUE); pWnd20->EnableWindow(TRUE); pWnd21->EnableWindow(TRUE); pWnd22->EnableWindow(TRUE); } if(m_iRunMode == 0){ //水泵自动 pWnd10->ShowWindow(SW_SHOW); pWnd11->ShowWindow(SW_SHOW); pWnd12->ShowWindow(SW_HIDE); if(m_iCalcMode == 0){ //计算 pWnd13->SetWindowText(_T("每小时最大启动次数Nmax:")); pWnd14->SetWindowText(_T("水泵的出水量Qb(m3/h):")); pWnd15->ShowWindow(SW_HIDE); pWnd16->ShowWindow(SW_HIDE); pWnd20->ShowWindow(SW_HIDE); pWnd21->ShowWindow(SW_HIDE); } else if(m_iCalcMode == 1){//估算 pWnd13->SetWindowText(_T("设计秒流量Q(m3/h):")); pWnd14->SetWindowText(_T("水泵的出水量Qb(m3/h):")); pWnd15->SetWindowText(_T("秒流量持续时间T(0.5h):")); pWnd16->SetWindowText(_T("最短运行时间Tb(0.25h):")); pWnd15->ShowWindow(SW_SHOW); pWnd16->ShowWindow(SW_SHOW); pWnd20->ShowWindow(SW_SHOW); pWnd21->ShowWindow(SW_SHOW); } } else if(m_iRunMode == 1){ //水泵人工 pWnd10->ShowWindow(SW_HIDE); pWnd11->ShowWindow(SW_HIDE); pWnd12->ShowWindow(SW_SHOW); pWnd15->ShowWindow(SW_SHOW); pWnd16->ShowWindow(SW_SHOW); pWnd20->ShowWindow(SW_SHOW); pWnd21->ShowWindow(SW_SHOW); pWnd12->SetWindowText(_T("公式:Qd/n-Tb×Qm")); pWnd13->SetWindowText(_T("最高日用水量Qd(m3):")); pWnd14->SetWindowText(_T("平均每小时用水量Qm(m3):")); pWnd15->SetWindowText(_T("启动一次运行时间Tb(h):")); pWnd16->SetWindowText(_T("水泵每天启动次数(n):")); } else if(m_iRunMode == 2){ //单设水箱 pWnd10->ShowWindow(SW_HIDE); pWnd11->ShowWindow(SW_HIDE); pWnd12->ShowWindow(SW_SHOW); pWnd12->SetWindowText(_T("公式:Qm×T")); pWnd13->SetWindowText(_T("平均每小时用水量Qm(m3):")); pWnd14->SetWindowText(_T("最大连续时间T(h):")); pWnd15->ShowWindow(SW_HIDE); pWnd16->ShowWindow(SW_HIDE); pWnd20->ShowWindow(SW_HIDE); pWnd21->ShowWindow(SW_HIDE); } UpdateData(FALSE); } void CWaterTankCalcDlg::OnRadioPurpose1() { Reset(); } void CWaterTankCalcDlg::OnRadioPurpose2() { Reset(); } void CWaterTankCalcDlg::OnRadioPurpose3() { Reset(); } void CWaterTankCalcDlg::OnRadioRunmode1() { Reset(); } void CWaterTankCalcDlg::OnRadioRunmode2() { Reset(); } void CWaterTankCalcDlg::OnRadioRunmode3() { Reset(); } void CWaterTankCalcDlg::OnRadioCalcmode1() { Reset(); } void CWaterTankCalcDlg::OnRadioCalcmode2() { Reset(); } void CWaterTankCalcDlg::OnButtonDwgSeries() { CTemporaryResourceOverride vTemp; CSelWaterTankDlg dlg; UpdateData(TRUE); double dV = _tstof(m_csAllVolume); dlg.m_dV = dV; dlg.DoModal(); }