⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tankdlg.cpp

📁 本程序是采用VC++和Mysql编写的一款油量换算软件
💻 CPP
字号:
// TankDlg.cpp : implementation file
//

#include "stdafx.h"
#include "OilTrans.h"
#include "TankDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTankDlg dialog


CTankDlg::CTankDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTankDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTankDlg)
	m_nHeight = 0;
	m_sName = _T("");
	m_fVolume = 0.0f;
	//}}AFX_DATA_INIT
	nTankNum =0;
	nOilType = 0;
}


void CTankDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTankDlg)
	DDX_Control(pDX, IDC_EDIT_NAME, m_ctrName);
	DDX_Control(pDX, IDC_CMB_OILTYPE, m_ctrOilType);
	DDX_Text(pDX, IDC_EDIT_HEIGHT, m_nHeight);
	DDX_Text(pDX, IDC_EDIT_NAME, m_sName);
	DDX_Text(pDX, IDC_EDIT_VOLUME, m_fVolume);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTankDlg, CDialog)
	//{{AFX_MSG_MAP(CTankDlg)
	ON_BN_CLICKED(IDC_BTN_NEW, OnBtnNew)
	ON_BN_CLICKED(IDC_BTN_OK, OnBtnOk)
	ON_CBN_SELCHANGE(IDC_CMB_OILTYPE, OnSelchangeCmbOiltype)
	ON_BN_CLICKED(IDC_BTN_NEXT, OnBtnNext)
	ON_WM_KEYUP()
	ON_BN_CLICKED(IDC_BTN_EDIT, OnBtnEdit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTankDlg message handlers

void CTankDlg::OnBtnNew() 
{
	// TODO: Add your control notification handler code here
	m_ctrName.EnableWindow(TRUE);
	UpdateData(TRUE);
    nTankNum++;
	CString sTemp;
	sTemp.Format("%d",nTankNum);
	m_sName="Tank_"+sTemp;
	if(!OpenDB()){
		AfxMessageBox("Not Open datebase!");
		return;
	}
	m_ctrlMysql.CreateTable("Create table "+m_sName+ " (height int,volume float)");
	
	UpdateData(FALSE);
	m_ctrName.EnableWindow(FALSE);
	::SendMessage(hWnd, WM_OT_NT, (WPARAM)('s'), (LPARAM)0);
	UpdateData(TRUE);
	nOilType = m_ctrOilType.GetCurSel();
	UpdateData(FALSE);
	::SendMessage(hWnd, WM_OT_NTO, (WPARAM)('s'), (LPARAM)nOilType);
    
}

BOOL CTankDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_ctrName.EnableWindow(TRUE);
	UpdateData(TRUE);
    m_sName = "自动添加";
	UpdateData(FALSE);
	m_ctrName.EnableWindow(FALSE);
	m_ctrOilType.AddString("原油");
	m_ctrOilType.AddString("成品油");
	m_ctrOilType.AddString("润滑油");
	m_ctrOilType.SetCurSel(0);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CTankDlg::OnBtnOk() 
{
	// TODO: Add your control notification handler code here
	
}

void CTankDlg::SetTankNum(int nTanks)
{
   nTankNum = nTanks;
}

void CTankDlg::OnSelchangeCmbOiltype() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	nOilType = m_ctrOilType.GetCurSel();
	UpdateData(FALSE);
	::SendMessage(hWnd, WM_OT_NTO, (WPARAM)('s'), (LPARAM)nOilType);
}

void CTankDlg::SetWnd(HWND wnd)
{
    hWnd = wnd;
}

void CTankDlg::OnBtnNext() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	m_sSql = "Insert into "+m_sName +" values (";
	m_sSql=m_sSql+isvt(m_nHeight)+","+fsvt(m_fVolume)+")";
	m_ctrlMysql.Insert(m_sSql);
	m_nOldH = m_nHeight;
	m_nHeight = m_nHeight+10;
	m_fVolume =0;
	UpdateData(FALSE);
}
CString CTankDlg::isvt(int n)
{
  CString result;
  result.Format("%d",n);
  return result;
}

CString CTankDlg::fsvt(float f)
{
  CString result;
  result.Format("%0.2f",f);
  return result;
}

void CTankDlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_nOldH-m_nHeight==10)
       OnBtnNext();
	//if(nChar=)

	CDialog::OnKeyUp(nChar, nRepCnt, nFlags);
}

BOOL CTankDlg::OpenDB()
{
   if(m_ctrlMysql.IsOpen())
         m_ctrlMysql.Close();
	 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())
        return TRUE;
	
	return FALSE;
}

void CTankDlg::OnBtnEdit() 
{
	// TODO: Add your control notification handler code here
	m_ctrName.EnableWindow(TRUE);
	UpdateData(TRUE);
	CString sTemp;
	sTemp.Format("%d",nTankNum);
	m_sName="Tank_"+sTemp;
	if(!OpenDB()){
		AfxMessageBox("Not Open datebase!");
		return;
	}
	UpdateData(FALSE);    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -