?? cmpdlg.cpp
字號:
// CmpDlg.cpp : implementation file
//
#include "stdafx.h"
#include "OilTrans.h"
#include "CmpDlg.h"
#include "OilMethod.h"
#include "StrH.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCmpDlg dialog
CCmpDlg::CCmpDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCmpDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCmpDlg)
m_bOTab = FALSE;
m_fH = 0.0f;
m_fP = 0.0f;
m_fT = 0.0f;
m_fV = 0.0f;
m_sRes = _T("");
//}}AFX_DATA_INIT
m_nOil = 0;
m_nTanks =0;
for(int i =0;i<8;i++)
{
nOil[i] = -1;
}
}
void CCmpDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCmpDlg)
DDX_Control(pDX, IDC_EDIT_V, m_cEditV);
DDX_Control(pDX, IDC_EDIT_H, m_cEH);
DDX_Control(pDX, IDC_COMBO_TANK, m_hCmbTank);
DDX_Control(pDX, IDC_COMBO_OIL, m_hCmbOil);
DDX_Check(pDX, IDC_CHECK_OTAB, m_bOTab);
DDX_Text(pDX, IDC_EDIT_H, m_fH);
DDX_Text(pDX, IDC_EDIT_P, m_fP);
DDX_Text(pDX, IDC_EDIT_T, m_fT);
DDX_Text(pDX, IDC_EDIT_V, m_fV);
DDX_Text(pDX, IDC_EDIT_RESILT, m_sRes);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCmpDlg, CDialog)
//{{AFX_MSG_MAP(CCmpDlg)
ON_BN_CLICKED(IDC_BTN_CMP, OnBtnCmp)
ON_BN_CLICKED(IDC_CHECK_OTAB, OnCheckOtab)
ON_CBN_SELCHANGE(IDC_COMBO_OIL, OnSelchangeComboOil)
ON_CBN_SELCHANGE(IDC_COMBO_TANK, OnSelchangeComboTank)
ON_BN_CLICKED(ID_CANCEL, OnCancel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCmpDlg message handlers
void CCmpDlg::OnBtnCmp()
{
// TODO: Add your control notification handler code here
COilMethod om;
CStrH strH;
UpdateData(TRUE);
CString m_sTemp;
m_sRes+= "計算結果:\t\t\t20℃ 下的密度:";
double dSp=om.Dst_ST(m_fP,m_fT,m_nOil);
m_sTemp= strH.ftoa(dSp);
m_sRes = m_sRes+m_sTemp;
double vcf = om.Cfc_V(m_fT,dSp,m_nOil);
m_sTemp=strH.ftoa(vcf);
m_sRes += "\t\t體積修正系數(shù):"+m_sTemp;
float fTemp =0.0;
if(m_bOTab)
{
fTemp=GetVolume();
m_fV=fTemp;
m_sRes += "\t\t質量:"+strH.ftoa(om.Decimal_R(dSp*vcf*fTemp,2))+" Kg!";
}
else
m_sRes += "\t\t質量:"+strH.ftoa(om.Decimal_R(dSp*vcf*m_fV,2))+" Kg!";
m_sRes+="\t***********************************";
UpdateData(FALSE);
}
void CCmpDlg::OnCheckOtab()
{
// TODO: Add your control notification handler code here
}
BOOL CCmpDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_hCmbTank.EnableWindow(m_bOTab);
m_cEH.EnableWindow(m_bOTab);
if(m_bOTab)
m_cEditV.EnableWindow(FALSE);
else
m_cEditV.EnableWindow(TRUE);
InitTankCmb(m_nTanks);
if(m_bOTab)
OpenDB();
m_hCmbOil.AddString("成品油");
m_hCmbOil.AddString("潤滑油");
m_hCmbOil.AddString("原油");
m_hCmbOil.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CCmpDlg::OnSelchangeComboOil()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_nOil = m_hCmbOil.GetCurSel();
UpdateData(FALSE);
}
void CCmpDlg::SetCheckO(BOOL bT)
{
m_bOTab = bT;
}
void CCmpDlg::OnCancel()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_sRes ="";
UpdateData(FALSE);
}
BOOL CCmpDlg::OpenDB()
{
if(m_ctrlMysql.IsOpen())
{
m_ctrlMysql.Close();
m_bOpen = false;
} else {
m_ctrlMysql.SetDB("OT");
m_ctrlMysql.SetPort("3306");
m_ctrlMysql.SetUser("root");
m_ctrlMysql.SetPassword("");
m_ctrlMysql.SetIP("127.0.0.1");
m_ctrlMysql.InitMYSQL();
if (m_ctrlMysql.Open())
{
m_bOpen = TRUE ;
return TRUE;
}
}
return FALSE;
}
void CCmpDlg::SetTankNum(int nTanks)
{
m_nTanks = nTanks;
}
void CCmpDlg::UpdateCheckO(BOOL b)
{
UpdateData(TRUE);
m_bOTab = b;
m_hCmbTank.EnableWindow(m_bOTab);
m_cEH.EnableWindow(m_bOTab);
if(b)
{
m_cEditV.EnableWindow(FALSE);
OpenDB();
}
else
m_cEditV.EnableWindow(TRUE);
UpdateData(FALSE);
}
void CCmpDlg::InitTankCmb(int n)
{
UpdateData(TRUE);
CString sT;
for(int i = 1;i<=n;i++)
{
sT.Format("%d",i);
m_hCmbTank.AddString("Tank_"+sT);
}
m_hCmbTank.SetCurSel(0);
//m_hCmbTank.EnableWindow(FALSE);
UpdateData(FALSE);
}
float CCmpDlg::GetVolume()
{ OpenDB();
m_ctrlMysql.SetSql("select * from tank_1");
theResult= m_ctrlMysql.Exculte();
int nH0,nH1;
float fV0,fV1;
nH0 = strH.nBottom(m_fH);
nH1 = strH.ntop(m_fH);
while(theResult.Next())
{
if(theResult.GetInt("height")==nH0)
fV0 = theResult.GetFloat("volume");
if(theResult.GetInt("height")==nH1)
fV1 = theResult.GetFloat("volume");
}
float r=0.0;
m_cEditV.EnableWindow(TRUE);
r = (m_fH-nH0)/(nH1-nH0)*(fV1-fV0)+fV0;
m_cEditV.EnableWindow(FALSE);
return r;
}
void CCmpDlg::SetOil(int nIndex, int nOilType)
{
nOil[nIndex] = nOilType;
}
void CCmpDlg::OnSelchangeComboTank()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int n = m_hCmbTank.GetCurSel();
m_hCmbOil.Clear();
m_hCmbOil.SetCurSel(nOil[n]);
UpdateData(FALSE);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -