// 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(); } }