📄 unitconversiondlg.cpp
字号:
//功率赋值
void CUnitConversionDlg::listaddpower()
{
m_list.ResetContent();
m_list.AddString(L"马 力");
m_list.AddString(L"千 瓦");
m_list.AddString(L"瓦 ");
m_list.AddString(L"英 马 力");
m_list.SetCurSel(0);
}
//能量赋值
void CUnitConversionDlg::listaddenergy()
{
m_list.ResetContent();
m_list.AddString(L"千 卡");
m_list.AddString(L"千 瓦 时");
m_list.AddString(L"焦 耳");
m_list.SetCurSel(0);
}
//压强赋值
void CUnitConversionDlg::listaddpress()
{
m_list.ResetContent();
m_list.AddString(L"大 气 压");
m_list.AddString(L"毫 汞 柱");
m_list.AddString(L"帕 斯 卡");
m_list.SetCurSel(0);
m_input=L"1";
UpdateData(false);
}
void CUnitConversionDlg::OnButton1()
{
// TODO: Add your control notification handler code here
int index;
CString input;
index=m_typelist.GetCurSel();
item=m_list.GetCurSel();
CString result;
unsigned short * num;
UpdateData(true);
input=m_input;
double k;
k=wcstod(input,&num);
m_result.ResetContent();
switch(index)
{
//长度
case 0:
for(i=0;i<item;i++)
{
lengthresult[i]=k*length[i]/length[item];
result.Format(L" %g",lengthresult[i]);
m_result.AddString(lengthunit[i]+result);
}
for(i=item+1;i<16;i++)
{
lengthresult[i]=k*length[i]/length[item];
result.Format(L" %g",lengthresult[i]);
m_result.AddString(lengthunit[i]+result);
}
break;
//面积
case 2:
for(i=0;i<item;i++)
{
arearesult[i]=k*area[i]/area[item];
result.Format(L" %g",arearesult[i]);
m_result.AddString(areaunit[i]+result);
}
for(i=item+1;i<12;i++)
{
arearesult[i]=k*area[i]/area[item];
result.Format(L" %g",arearesult[i]);
m_result.AddString(areaunit[i]+result);
}
break;
//容积
case 4:
for(i=0;i<item;i++)
{
cubageresult[i]=k*cubage[i]/cubage[item];
result.Format(L" %g",cubageresult[i]);
m_result.AddString(cubageunit[i]+result);
}
for(i=item+1;i<12;i++)
{
cubageresult[i]=k*cubage[i]/cubage[item];
result.Format(L" %g",cubageresult[i]);
m_result.AddString(cubageunit[i]+result);
}
break;
//重量
case 6:
for(i=0;i<item;i++)
{
weightresult[i]=k*weight[i]/weight[item];
result.Format(L" %g",weightresult[i]);
m_result.AddString(weightunit[i]+result);
}
for(i=item+1;i<12;i++)
{
weightresult[i]=k*weight[i]/weight[item];
result.Format(L" %g",weightresult[i]);
m_result.AddString(weightunit[i]+result);
}
break;
//温度
case 8:
temconversion();
break;
//功率
case 10:
for(i=0;i<item;i++)
{
powerresult[i]=k*power[i]/power[item];
result.Format(L" %g",powerresult[i]);
m_result.AddString(powerunit[i]+result);
}
for(i=item+1;i<4;i++)
{
powerresult[i]=k*power[i]/power[item];
result.Format(L" %g",powerresult[i]);
m_result.AddString(powerunit[i]+result);
}
break;
//能量
case 12:
for(i=0;i<item;i++)
{
energyresult[i]=k*energy[i]/energy[item];
result.Format(L" %g",energyresult[i]);
m_result.AddString(energyunit[i]+result);
}
for(i=item+1;i<3;i++)
{
energyresult[i]=k*energy[i]/energy[item];
result.Format(L" %g",energyresult[i]);
m_result.AddString(energyunit[i]+result);
}
break;
//压强
case 14:
for(i=0;i<item;i++)
{
pressresult[i]=k*press[i]/press[item];
result.Format(L" %g",pressresult[i]);
m_result.AddString(pressunit[i]+result);
}
for(i=item+1;i<3;i++)
{
pressresult[i]=k*press[i]/press[item];
result.Format(L" %g",pressresult[i]);
m_result.AddString(pressunit[i]+result);
}
break;
}
}
//温度转换
void CUnitConversionDlg::temconversion()
{
item=m_list.GetCurSel();
CString result,input;
unsigned short * num;
UpdateData(true);
input=m_input;
double k;
k=wcstod(input,&num);
switch(item)
{
case 0:
if(k<-273.15)
{
AfxMessageBox(L"开氏温度不能小于0,所以你的输入必须大于或等于-273.15");
}
else
{
temresult[0]=k*1.8+32;
result.Format(L" %g",temresult[0]);
m_result.AddString(temunit[1]+result);
temresult[1]=k+273.15;
result.Format(L" %g",temresult[1]);
m_result.AddString(temunit[2]+result);
}
break;
case 1:
if(k<-459.67)
{
AfxMessageBox(L"开氏温度不能小于0,所以你的输入必须大于或等于-459.67");
}
else
{
temresult[0]=(k-32)/1.8;
result.Format(L" %g",temresult[0]);
m_result.AddString(temunit[0]+result);
temresult[1]=temresult[0]+273.15;
result.Format(L" %g",temresult[1]);
m_result.AddString(temunit[2]+result);
}
break;
case 2:
if(k<0)
{
AfxMessageBox(L"开氏温度不能小于0,请重新输入!");
}
else
{
temresult[0]=k-273.15;
result.Format(L" %g",temresult[0]);
m_result.AddString(temunit[0]+result);
temresult[1]=temresult[0]*1.8+32;
result.Format(L" %g",temresult[1]);
m_result.AddString(temunit[1]+result);
}
break;
}
}
void CUnitConversionDlg::OnSelchangelist()
{
// TODO: Add your control notification handler code here
m_input=L"1";
UpdateData(false);
OnButton1();
}
//回车键显示结果
BOOL CUnitConversionDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN)
{
if(pMsg->wParam==VK_RETURN)
{
OnButton1();
return 0;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
//设置控件大小和位置
void CUnitConversionDlg::controldialog()
{
ShowWindow(SW_SHOWMAXIMIZED);//最大化
CRect rect,namerect;
GetClientRect(&rect);
m_name.GetClientRect(&namerect);
m_name.MoveWindow(rect.right/2-namerect.right/2,0,60,20);
m_typelist.MoveWindow(0,20,rect.right/5,rect.bottom-20);
m_list.MoveWindow(rect.right/5+1,20,2*rect.right/5,20);
m_Input.MoveWindow(3*rect.right/5+1,20,2*rect.right/5,22);
m_button.MoveWindow(rect.right-2*rect.right/6,45,2*rect.right/6,20);
m_result.MoveWindow(rect.right/5+1,70,4*rect.right/5,rect.bottom-70);
}
//改变控件背景色
HBRUSH CUnitConversionDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
COLORREF typelistcolor=RGB(185,196,204);//单位列表框的颜色
COLORREF listcolor=RGB(247,231,246);//下拉列表的颜色
COLORREF inputcolor=RGB(192,200,224);//输入框颜色
COLORREF resultcolor=RGB(194,182,203);//显示结果控件颜色
//设置单位列表框的颜色
if(pWnd->GetDlgCtrlID()==IDC_typelist)
{
pDC->SetBkColor(typelistcolor);
pDC->SetBkMode(TRANSPARENT);
hbr=CreateSolidBrush(typelistcolor);
}
//设置下拉列表的颜色
if(pWnd->GetDlgCtrlID()==IDC_list)
{
pDC->SetBkColor(listcolor);
pDC->SetBkMode(TRANSPARENT);
hbr=CreateSolidBrush(listcolor);
}
//设置显示结果控件颜色
if(pWnd->GetDlgCtrlID()==IDC_result)
{
pDC->SetBkColor(resultcolor);
pDC->SetBkMode(TRANSPARENT);
hbr=CreateSolidBrush(resultcolor);
}
//设置输入框颜色
if(pWnd->GetDlgCtrlID()==IDC_input)
{
pDC->SetBkColor(inputcolor);
pDC->SetBkMode(OPAQUE);
hbr=CreateSolidBrush(inputcolor);
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
//输入框获得焦点是打开软键盘
void CUnitConversionDlg::OnSetfocusinput()
{
// TODO: Add your control notification handler code here
SipShowIM(SIPF_ON);
}
//输入框失去焦点是关闭软键盘
void CUnitConversionDlg::OnKillfocusinput()
{
// TODO: Add your control notification handler code here
SipShowIM(SIPF_OFF);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -