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

📄 unitconversiondlg.cpp

📁 evc下做的一个单位转换了程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//功率赋值
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 + -