148 lines
3.3 KiB
C++
148 lines
3.3 KiB
C++
// 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);
|
||
}
|