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

📄 unitsdlg.cpp

📁 实现长度、重量、体积等单位换算。在wince 环境下开发
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}

void CUnitsDlg::OnSelchangeComboRightup() 
{
	// TODO: Add your control notification handler code here
	CString m_EditTemp;
	double m_dValue1;
	pComboLeft = (CComboBox*)GetDlgItem(IDC_COMBO_RIGHTUP);
	nCurSelRightUp = pComboLeft->GetCurSel();
	m_dValue1 = wcstod(m_EditNumer, NULL);
	m_dValue2 = GetNumber(m_dValue1);
	m_EditTemp.Format(L"%f",m_dValue2);
	CEdit* pedit=(CEdit *)GetDlgItem(IDC_EDIT2);
	pedit->SetWindowText(m_EditTemp);
}

void CUnitsDlg::OnSelchangeComboRightdown() 
{
	// TODO: Add your control notification handler code here
	CString m_EditTemp1;
	double m_dValue1;
	pComboLeft = (CComboBox*)GetDlgItem(IDC_COMBO_RIGHTDOWN);
	nCurSelRightDown = pComboLeft->GetCurSel();	
	m_dValue1 = wcstod(m_EditNumer, NULL);
	m_dValue2 = GetNumber(m_dValue1);
	m_EditTemp1.Format(L"%f",m_dValue2);
	CEdit* pedit=(CEdit *)GetDlgItem(IDC_EDIT2);
	pedit->SetWindowText(m_EditTemp1);
}

void CUnitsDlg::OnSelchangeComboLeft() 
{
	// TODO: Add your control notification handler code here
	CString m_EditTemp1;
	double m_dValue1;
	pComboLeft = (CComboBox*)GetDlgItem(IDC_COMBO_LEFT);
	nCurSel = pComboLeft->GetCurSel();
	nCurSelRightUp = 0;
	nCurSelRightDown = 0;
	ShowComboRight();
	m_dValue1 = wcstod(m_EditNumer, NULL);
	m_dValue2 = GetNumber(m_dValue1);
	m_EditTemp1.Format(L"%f",m_dValue2);
	CEdit* pedit=(CEdit *)GetDlgItem(IDC_EDIT2);
	pedit->SetWindowText(m_EditTemp1);
}

void CUnitsDlg::ShowComboRight()
{
	int j;
	pComboRightUp->ResetContent();
	pComboRightDown->ResetContent();
	switch (nCurSel)
	{
	case 0:
		pComboRightUp = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTUP);
		pComboRightDown = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTDOWN);
		for (j = 0;j<15;j++)
		{
			CString m_szFathom = szFathom[j];
			pComboRightUp->AddString(m_szFathom);
			pComboRightDown->AddString(m_szFathom);
		}
		break;
	case 1:
		pComboRightUp = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTUP);
		pComboRightDown = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTDOWN);
		for (j = 0;j<14;j++)
		{
			CString m_szMaund = szMaund[j];
			pComboRightUp->AddString(m_szMaund);
			pComboRightDown->AddString(m_szMaund);
		}
		break;
	case 2:
		pComboRightUp = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTUP);
		pComboRightDown = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTDOWN);
		for (j = 0;j<14;j++)
		{
			CString m_szCubage = szCubage[j];
			pComboRightUp->AddString(m_szCubage);
			pComboRightDown->AddString(m_szCubage);
		}
		break;
	case 3:
		pComboRightUp = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTUP);
		pComboRightDown = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTDOWN);
		for (j = 0;j<14;j++)
		{
			CString m_szLandmeasure = szLandmeasure[j];
			pComboRightUp->AddString(m_szLandmeasure);
			pComboRightDown->AddString(m_szLandmeasure);
		}
		break;
	case 4:
		pComboRightUp = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTUP);
		pComboRightDown = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTDOWN);
		for (j = 0;j<9;j++)
		{
			CString m_szRadian = szRadian[j];
			pComboRightUp->AddString(m_szRadian);
			pComboRightDown->AddString(m_szRadian);
		}
		break;
	case 5:
		pComboRightUp = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTUP);
		pComboRightDown = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTDOWN);
		for (j = 0;j<6;j++)
		{
			CString m_szPower = szPower[j];
			pComboRightUp->AddString(m_szPower);
			pComboRightDown->AddString(m_szPower);
		}
		break;
	case 6:
		pComboRightUp = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTUP);
		pComboRightDown = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTDOWN);
		for (j = 0;j<10;j++)
		{
			CString m_szPressure = szPressure[j];
			pComboRightUp->AddString(m_szPressure);
			pComboRightDown->AddString(m_szPressure);
		}
		break;
	case 7:
		pComboRightUp = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTUP);
		pComboRightDown = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTDOWN);
		for (j = 0;j<3;j++)
		{
			CString m_szSpeed = szSpeed[j];
			pComboRightUp->AddString(m_szSpeed);
			pComboRightDown->AddString(m_szSpeed);
		}
		break;
	case 8:
		pComboRightUp = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTUP);
		pComboRightDown = (CComboBox*)GetDlgItem( IDC_COMBO_RIGHTDOWN);
		for (j = 0;j<3;j++)
		{
			CString m_szTemperature = szTemperature[j];
			pComboRightUp->AddString(m_szTemperature);
			pComboRightDown->AddString(m_szTemperature);
		}
		break;
	default:
		break;

	}
		
}

double CUnitsDlg::LengthUnit(int nType)
{
	DOUBLE  dUnit = 1;
	switch(nType)
	{
	case 0:  dUnit = 1;             break;// "米,公尺"		
	case 1:  dUnit = 1000;          break;//公里,千米		
	case 2:  dUnit = 1609.35;       break;//英里		
	case 3:  dUnit = 0.9144;        break;//码	
	case 4:  dUnit = 0.3048;        break; //英尺		
	case 5:  dUnit = 0.0254;        break;//英寸
	case 6:  dUnit = 1853;          break;//海里(英)		
	case 7:  dUnit = 1852;          break;//海里国际量程	
	case 8:  dUnit = 0.001;         break;//毫米
	case 9:  dUnit = 0.01;          break;//厘米
	case 10: dUnit = 0.00001;       break;//忽米	
	case 11: dUnit = 0.0001;        break;//丝米	
	case 12: dUnit = 0.1;           break;//分米	
	case 13: dUnit = 0.000000001;   break;//毫微米
	case 14: dUnit = 0.000001;      break;//微米
	}
	return dUnit;
}

double CUnitsDlg::WeightUnit(int nType)
{
	double  dUnit = 1;
	switch(nType)
	{
	case 0:  dUnit = 1;          break;//千克,公斤	
	case 1:  dUnit = 0.001;      break;//克
	case 2:  dUnit = 1000;       break;//公吨	
	case 3:  dUnit = 0.45359;    break;//磅常衡
	case 4:  dUnit = 0.37324;    break;//磅金衡		
	case 5:  dUnit = 0.373;      break;//磅药衡
	case 6:  dUnit = 0.02835;    break;//盎司常衡
	case 7:  dUnit = 0.0311035;  break;//盎司金衡
	case 8:  dUnit = 0.031103;   break;//盎司药衡
	case 9:  dUnit = 1016.04;    break;//吨英
	case 10: dUnit = 907.18;     break;//吨美	
	case 11: dUnit = 1016.05;    break;//英吨,长吨	
	case 12: dUnit = 907.185;    break;//美吨,短吨	
	case 13: dUnit = 0.000001;   break;//毫克
	}
	return dUnit;
}

double CUnitsDlg::VolumeUnit(int nType)
{
	double  dUnit = 1;
	switch(nType)
	{
	case 0:  dUnit = 1;        break;//升	
	case 1:  dUnit = 0.001;    break;//毫升
	case 2:  dUnit = 4.54596;  break;//加仑(英)	
	case 3:  dUnit = 3.78533;  break;//加仑(美)
	case 4:  dUnit = 1.136;    break;//夸脱英
	case 5:  dUnit = 0.946;    break;//夸脱美(液)	
	case 6:  dUnit = 1.101;    break;//夸脱美(干)
	case 7:  dUnit = 0.5683;   break;//品脱英	
	case 8:  dUnit = 0.47317;  break;//品脱美(液)	
	case 9:  dUnit = 0.55;     break;//品脱美(干)	
	case 10: dUnit = 36.3677;  break;//蒲式耳(英)	
	case 11: dUnit = 35.2383;  break;//蒲式耳(美)	
	case 12: dUnit = 0.000001; break;//微升	
	case 13: dUnit = 0.01;     break;//厘升	
	}
	return dUnit;
}

double CUnitsDlg::AreaUnit(int nType)
{
	DOUBLE  dUnit = 1;
	switch(nType)
	{
	case 0:  dUnit = 1;          break;//平方米	
	case 1:  dUnit = 100;        break;//公亩
	case 2:  dUnit = 4047;       break;//英亩
	case 3:  dUnit = 10000;      break;//公顷
	case 4:  dUnit = 1000000;    break;//平方公里
	case 5:  dUnit = 2590000;    break;//平方英里
	case 6:  dUnit = 0.8361;     break;//平方码	
	case 7:  dUnit = 0.092903;   break;//平方英尺	
	case 8:  dUnit = 0.0006452;  break;//平方英寸		
	case 9:  dUnit = 666.666;    break;//市亩
	case 10: dUnit = 66.6666;    break;//市分
	case 11: dUnit = 66666;      break;//市顷
	case 12: dUnit = 6.6667;     break;//市厘
	case 13: dUnit = 0.66667;    break;//市毫
	}
	return dUnit;
}

double CUnitsDlg::RadianUnit(int nType)
{
	double  dUnit = 1;
	switch(nType)
	{
	case 0:  dUnit = 0.01745;   break;//度
	case 1:  dUnit = 0.0002909; break;//分
	case 2:  dUnit = 1;         break;//弧度
	case 3:  dUnit = 0.001;     break;//毫弧度
	case 4:  dUnit = 0.000001;  break;//微弧度
	case 5:  dUnit = 6.283;     break;//圆周
	case 6:  dUnit = 1.5708;    break;//直角
	case 7:  dUnit = 1.0472;    break;//六分之一圆
	case 8:  dUnit = 0.7854;    break;//八分之一圆
	}
	return dUnit;
}

double CUnitsDlg::PowerUnit(int nType)
{
	double  dUnit = 1;
	switch(nType)
	{
	case 0:  dUnit = 1000;		  break;//千瓦	
	case 1:  dUnit = 1;			  break;//瓦		
	case 2:  dUnit = 9.803922;    break;//公斤.米/秒	
	case 3:  dUnit = 4184.100418; break;//千卡/秒	
	case 4:  dUnit = 0.293083;	  break;//英热单位/时		
	case 5:  dUnit = 735.294118;  break; //米制/马力		
	}
	return dUnit;
}

double CUnitsDlg::PressUnit(int nType)
{
	double  dUnit = 1;
	switch(nType)
	{
	case 0:  dUnit = 1000;        break;//千帕	
	case 1:  dUnit = 1;			  break;//帕	
	case 2:  dUnit = 104.9979;	  break;//巴 
	case 3:  dUnit = 0.1;         break;//托达因/平方厘米	
	case 4:  dUnit = 133.315557;  break;//毫米汞柱	
	case 5:  dUnit = 9.806613;    break;//毫米水柱	
	case 6:  dUnit = 98.068059;   break;//工程大气压		
	case 7:  dUnit = 0.000145;    break;//磅力/平方英寸		
	case 8:  dUnit = 0.0000102;   break;//千克力/平方厘米	
	case 9:  dUnit = 0.0000098;   break;//大气压	
	}
	return dUnit;
}

double CUnitsDlg::SpeedUnit(int nType)
{
	double  dUnit = 1;
	switch(nType)
	{
	case 0:  dUnit = 1;        break;         //米/秒	
	case 1:  dUnit = 0.44704;  break;         //英里/时	
	case 2:  dUnit = 0.3048;    break;         //英尺/时	
	}
	return dUnit;
}

double CUnitsDlg::TemperatureUnit(double dResult, INT nTypeUp, INT nTypeDown)
{
/*
	switch(nTypeUp)
	{
	case 0:   dResult = dResult;              break;
	case 1:   dResult = dResult * 9/5 + 32;   break;//华氏度
	case 2:   dResult = dResult -273.15;      break;//开式度
	}
	
	switch(nTypeDown)
	{
	case 0: dResult = dResult;                break;
	case 1: dResult = (dResult-32)*5/9;       break;//F华氏度
	case 2: dResult = dResult + 273.15;       break;//K开式度	
	}
*/
	//F = C*9/5+32	 C = (F-32)*5/9  	K = C+273.15
	switch(nTypeUp)
	{
	case 0:
		switch(nTypeDown)
		{
		case 0: dResult = dResult;                break;
		case 1: dResult = dResult*9/5 + 32;       break;//F华氏度
		case 2: dResult = dResult + 273.15;       break;//K开式度	
		}
		break;
	case 1:
		switch(nTypeDown)
		{
		case 0: dResult = (dResult-32)*5/9;         break;
		case 1: dResult = dResult;					break;//F华氏度
		case 2: dResult = (dResult-32)*5/9 + 273.15;break;//K开式度	
		}
		break;		
	case 2:   
		switch(nTypeDown)
		{
		case 0: dResult = dResult - 273.15;         break;
		case 1: dResult = (dResult - 273.15)*9/5+32;break;//F华氏度
		case 2: dResult = dResult;				    break;//K开式度	
		}
		break;		
	}
	return dResult;
}

double CUnitsDlg::GetNumber(double dResult)
{
	double  dUnitUp = 1;
	double  dUnitDown = 1;
	switch(nCurSel)
	{
	case 0:             //长度	以"米,公尺"为基准
		dUnitUp   = LengthUnit(nCurSelRightUp);
		dUnitDown = LengthUnit(nCurSelRightDown);
		
		dResult = dResult * (dUnitUp / dUnitDown);
		break;
	case 1:             //重量,质量	以"千克,公斤"为基准
		dUnitUp   = WeightUnit(nCurSelRightUp);
		dUnitDown = WeightUnit(nCurSelRightDown);
		
		dResult = dResult * (dUnitUp / dUnitDown);
		break;
	case 2:             //体积,容积	以"升"为基准
		dUnitUp   = VolumeUnit(nCurSelRightUp);
		dUnitDown = VolumeUnit(nCurSelRightDown);
		
		dResult = dResult * (dUnitUp / dUnitDown);
		break;
	case 3:             //面积	以"平方米"为基准
		dUnitUp   = AreaUnit(nCurSelRightUp);
		dUnitDown = AreaUnit(nCurSelRightDown);
		
		dResult = dResult * (dUnitUp / dUnitDown);
		break;
	case 4:             //弧度	以"弧度"为基准
		dUnitUp   = RadianUnit(nCurSelRightUp);
		dUnitDown = RadianUnit(nCurSelRightDown);
		
		dResult = dResult * (dUnitUp / dUnitDown);
		break;
	case 5:             //功率	以"瓦"为基准
		dUnitUp   = PowerUnit(nCurSelRightUp);
		dUnitDown = PowerUnit(nCurSelRightDown);
		
		dResult = dResult * (dUnitUp / dUnitDown);
		break;
	case 6:             //压力	以"帕"为基准
		dUnitUp   = PressUnit(nCurSelRightUp);
		dUnitDown = PressUnit(nCurSelRightDown);
		
		dResult = dResult * (dUnitUp / dUnitDown);
		break;
	case 7:             //速度	以"米/秒"为基准
		dUnitUp   = SpeedUnit(nCurSelRightUp);
		dUnitDown = SpeedUnit(nCurSelRightDown);
		
		dResult = dResult * (dUnitUp / dUnitDown);
		break;
		
	case 8:             //温度 以"摄氏度"为基准
		dResult = TemperatureUnit(dResult, nCurSelRightUp, nCurSelRightDown);
		break;
	default:
		break;
	}
	return dResult;
}

⌨️ 快捷键说明

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