Files
envi-code/SourceCode/Code2026/tg_shs/shs_kerncmd/UnitSetDlg.cpp
T
2026-09-28 15:28:50 +08:00

118 lines
2.4 KiB
C++

// UnitSetDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "UnitSetDlg.h"
IMPLEMENT_DYNAMIC(CUnitSetDlg, CModelessDialog)
CUnitSetDlg::CUnitSetDlg(CWnd* pParent /*=NULL*/)
: CModelessDialog(CUnitSetDlg::IDD, pParent)
{
if (!DocGetMeterUnitDraw())
{
if (DocGetMeterUnitDim())
m_nUnitType=1;
else
m_nUnitType=0;
}
else
m_nUnitType=2;
m_csPScale.Format(_T("%g"), DocGetPScale());
}
CUnitSetDlg::~CUnitSetDlg()
{
}
void CUnitSetDlg::DoDataExchange(CDataExchange* pDX)
{
CModelessDialog::DoDataExchange(pDX);
DDX_CBIndex(pDX,IDC_CMB_UNIT, m_nUnitType);//单位换算
DDX_Control(pDX, IDC_CMB_UNIT, m_cmbUnitSet);
DDX_Text(pDX, IDC_CMB_PSCALE, m_csPScale);//当前比例
}
BEGIN_MESSAGE_MAP(CUnitSetDlg, CModelessDialog)
ON_CBN_SELCHANGE(IDC_CMB_UNIT, OnCbnSelchangeUnit)
ON_BN_CLICKED(IDOK, &CUnitSetDlg::OnBnClickedOk)
END_MESSAGE_MAP()
void CUnitSetDlg::OnCbnSelchangeUnit()
{
int oldType = m_nUnitType;
UpdateData();
//m_nUnitType == 1 || m_nUnitType == 0
//m_nUnitType == 2
//当从2变 1 或者 0的时候,*1000
//当1 或者 0b变2的时候,/1000
if ((oldType == 1 || oldType == 0) && m_nUnitType == 2)
{
double dPscale = _wtof(m_csPScale) / 1000.0;
//m_csPScale = Dist2Str(dPscale);
m_csPScale.Format(_T("%g"), dPscale);
UpdateData(FALSE);
}
else if (oldType == 2 && (m_nUnitType == 1 || m_nUnitType == 0))
{
double dPscale = _wtof(m_csPScale) * 1000.0;
//m_csPScale = Dist2Str(dPscale);
m_csPScale.Format(_T("%g"), dPscale);
UpdateData(FALSE);
}
}
void CUnitSetDlg::OnBnClickedOk()
{
UpdateGlobal();
CModelessDialog::OnOK();
}
void CUnitSetDlg::UpdateGlobal()
{
if (m_nUnitType==0)
{
DocSetMeterUnitDraw(FALSE);
DocSetMeterUnitDim(FALSE);
}
else if (m_nUnitType==1)
{
DocSetMeterUnitDraw(FALSE);
DocSetMeterUnitDim(TRUE);
}
else
{
DocSetMeterUnitDraw(TRUE);
DocSetMeterUnitDim(TRUE);
}
if (_tstof(m_csPScale)>0) {
DocSetPScale(_tstof(m_csPScale));
DocStatus();
}
}
BOOL CUnitSetDlg::OnInitDialog()
{
if(!CModelessDialog::OnInitDialog())
return FALSE;
((CComboBox*)GetDlgItem(IDC_CMB_UNIT))->InsertString(0, _T("mm mm"));
((CComboBox*)GetDlgItem(IDC_CMB_UNIT))->InsertString(1, _T("mm M"));
((CComboBox*)GetDlgItem(IDC_CMB_UNIT))->InsertString(2, _T("M M"));
UpdateData(FALSE);
return TRUE;
}
void UnitSet()
{
CUnitSetDlg dlg;
if(IDOK == dlg.DoModal())
{
dlg.UpdateGlobal();
}
}