Files
envi-code/SourceCode/Code2026/tg_shs/shs_TwtKernal/CanalCalcDlg.cpp
T

147 lines
3.3 KiB
C++
Raw Normal View History

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);
}