// CanalCalcDlg.cpp : implementation file // #include "stdafx.h" #include "CanalCalcDlg.h" #include "TAPI.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CCanalCalcDlg dialog CCanalCalcDlg::CCanalCalcDlg(CWnd* pParent /*=NULL*/) : CDialog(CCanalCalcDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCanalCalcDlg) m_csB = _T("4"); m_csH = _T("4"); m_csM = _T("0"); m_csI = _T("6"); m_iMode = 0; m_csRet = _T(""); m_csQ = _T(""); m_csV = _T(""); //}}AFX_DATA_INIT } void CCanalCalcDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCanalCalcDlg) DDX_Text(pDX, IDC_EDIT_B, m_csB); DDX_Text(pDX, IDC_EDIT_H, m_csH); DDX_Text(pDX, IDC_EDIT_M, m_csM); DDX_CBString(pDX, IDC_COMBO_I, m_csI); DDX_Radio(pDX, IDC_RADIO_MODE1, m_iMode); DDX_Text(pDX, IDC_EDIT_RET, m_csRet); DDX_Text(pDX, IDC_EDIT_Q, m_csQ); DDX_Text(pDX, IDC_EDIT_V, m_csV); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCanalCalcDlg, CDialog) //{{AFX_MSG_MAP(CCanalCalcDlg) ON_WM_PAINT() ON_BN_CLICKED(IDC_RADIO_MODE1, OnRadioMode1) ON_BN_CLICKED(IDC_RADIO4, OnRadio3) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCanalCalcDlg message handlers BOOL CCanalCalcDlg::OnInitDialog() { CDialog::OnInitDialog(); ResetMode(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CCanalCalcDlg::OnPaint() { CPaintDC dc(this); // device context for painting DisplayStatic(); } void CCanalCalcDlg::DisplayStatic() { CWnd* pWnd = GetDlgItem(IDC_PREVIEW); DrawSlide(_T("TWT(FANGGOU)"), pWnd); } void CCanalCalcDlg::OnOK() { UpdateData(TRUE); double m = _tstof(m_csM); double h = _tstof(m_csH); double b = _tstof(m_csB); double i = _tstof(m_csI) / 1000; double q = _tstof(m_csQ); double n = 0.013; double nRet(0); double nV(0); if(m_iMode == 0){ double nTmp(0); nTmp = (b+m*h)*h; nTmp = pow(nTmp, 5.0/3.0); double nTmp2 = pow(i, 0.5); nTmp = nTmp * nTmp2; nTmp2 = sqrt(1+ m*m) * 2 *h + b; nTmp2 = pow(nTmp2, 2.0/3.0) * n; nRet = nTmp / nTmp2; nV = nRet / (b + m*h)/h; } else { double nTmp(0); nTmp = sqrt(m*m + 1)*2*h+b; nTmp = pow(nTmp, 4.0/3.0) * n *n*q*q; double nTmp2 = (b + m*h)*h; nTmp2 = pow(nTmp2, 10.0/3.0); nRet = nTmp / nTmp2 * 1000; nV = q / (b + m*h)/h; } m_csRet.Format(_T("%.2f"), nRet); m_csV.Format(_T("%.2f"), nV); UpdateData(FALSE); } void CCanalCalcDlg::OnRadioMode1() { ResetMode(); } void CCanalCalcDlg::OnRadio3() { ResetMode(); } void CCanalCalcDlg::ResetMode() { UpdateData(TRUE); CWnd *pWnd1 = GetDlgItem(IDC_STATIC_RET); CWnd *pWnd2 = GetDlgItem(IDC_EDIT_Q); CWnd *pWnd3 = GetDlgItem(IDC_COMBO_I); if(m_iMode == 0){ pWnd1->SetWindowText(_T("流量Q(立方米/s):")); pWnd2->EnableWindow(FALSE); pWnd3->EnableWindow(TRUE); } else{ pWnd3->EnableWindow(FALSE); pWnd2->EnableWindow(TRUE); pWnd1->SetWindowText(_T("坡度(千分之):")); } UpdateData(FALSE); }