📄 unitsdlg.cpp
字号:
}
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 + -