2026-10-04 00:04:20 +08:00
|
|
|
|
// CanalCalcDlg.cpp : implementation file
|
2026-09-28 15:28:50 +08:00
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
#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){
|
2026-10-04 00:04:20 +08:00
|
|
|
|
pWnd1->SetWindowText(_T("流量Q(立方米/s):"));
|
2026-09-28 15:28:50 +08:00
|
|
|
|
pWnd2->EnableWindow(FALSE);
|
|
|
|
|
|
pWnd3->EnableWindow(TRUE);
|
|
|
|
|
|
}
|
|
|
|
|
|
else{
|
|
|
|
|
|
pWnd3->EnableWindow(FALSE);
|
|
|
|
|
|
pWnd2->EnableWindow(TRUE);
|
2026-10-04 00:04:20 +08:00
|
|
|
|
pWnd1->SetWindowText(_T("坡度(千分之):"));
|
2026-09-28 15:28:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
UpdateData(FALSE);
|
|
|
|
|
|
}
|