////////////////////////////////////////////////////////////////////////////// //文件: CScaleViewPage.cpp //主要功能: // //程序编写: 2006-12-07 // // ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" //#include "DFDrawPro.h" #include "ScaleViewPage.h" #include //#include "ScaleSelectPage.h" //#include "ScaleUnitPage.h" #include ".\PublicParam.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CScaleViewPage dialog IMPLEMENT_DYNCREATE(CScaleViewPage, CPropertyPage) CScaleViewPage::CScaleViewPage(CWnd* pParent /*=NULL*/) : CPropertyPage(CScaleViewPage::IDD) { //{{AFX_DATA_INIT(CScaleViewPage) m_bNotSame = FALSE; m_strPrintX = _T(""); m_strPrintY = _T(""); m_strRealX = _T(""); m_strRealY = _T(""); //}}AFX_DATA_INIT m_unit.SetSize(CUnit::UNIT_M, CUnit::UNIT_M); } void CScaleViewPage::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CScaleViewPage) DDX_Check(pDX, IDC_CHECK_SCALE_VIEW_XY, m_bNotSame); DDX_Text(pDX, IDC_EDIT_SCALE_VIEW_DX1, m_strRealX); DDX_Text(pDX, IDC_EDIT_SCALE_VIEW_DX2, m_strPrintX); DDX_Text(pDX, IDC_EDIT_SCALE_VIEW_DY1, m_strRealY); DDX_Text(pDX, IDC_EDIT_SCALE_VIEW_DY2, m_strPrintY); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CScaleViewPage, CPropertyPage) //{{AFX_MSG_MAP(CScaleViewPage) ON_EN_CHANGE(IDC_EDIT_SCALE_VIEW_DX1, OnChangeEDITRealX) ON_EN_CHANGE(IDC_EDIT_SCALE_VIEW_DX2, OnChangeEDITPrintX) ON_EN_CHANGE(IDC_EDIT_SCALE_VIEW_DY1, OnChangeEDITRealY) ON_EN_CHANGE(IDC_EDIT_SCALE_VIEW_DY2, OnChangeEDITPrintY) ON_BN_CLICKED(IDC_CHECK_SCALE_VIEW_XY, OnCheck1) ON_BN_CLICKED(IDC_BUTTON_SCALE_VIEW_WIZARD, OnBUTTONWizard) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CScaleViewPage message handlers void CScaleViewPage::OnChangeEDITRealX() { double k; if(fabs(atof(m_strRealX))<1e-100)return; k=atof(m_strRealY)/atof(m_strRealX); UpdateData( ); if(m_bNotSame)return; AfxGetPublicFunction()->FloatToString(m_strRealY,k*atof(m_strRealX), 10); UpdateData(FALSE); } void CScaleViewPage::OnChangeEDITRealY() { double k; if(fabs(atof(m_strRealX))<1e-100)return; k=atof(m_strRealY)/atof(m_strRealX); UpdateData( ); if(m_bNotSame)return; AfxGetPublicFunction()->FloatToString(m_strRealX,atof(m_strRealY)/k, 10); UpdateData(FALSE); } void CScaleViewPage::OnChangeEDITPrintX() { double k; if(fabs(atof(m_strPrintX))<1e-100)return; k=atof(m_strPrintY)/atof(m_strPrintX); UpdateData( ); if(m_bNotSame)return; AfxGetPublicFunction()->FloatToString(m_strPrintY,k*atof(m_strPrintX), 10); UpdateData(FALSE); } void CScaleViewPage::OnChangeEDITPrintY() { double k; if(fabs(atof(m_strPrintX))<1e-100)return; k=atof(m_strPrintY)/atof(m_strPrintX); UpdateData( ); if(m_bNotSame)return; AfxGetPublicFunction()->FloatToString(m_strPrintX,atof(m_strPrintY)/k, 10); UpdateData(FALSE); } BOOL CScaleViewPage::OnInitDialog() { CPropertyPage::OnInitDialog(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CScaleViewPage::OnCancel() { CPropertyPage::OnCancel(); } void CScaleViewPage::OnCheck1() //X、Y比例因子不同 { UpdateData(); } void CScaleViewPage::OnBUTTONWizard() { UpdateData(); CSize unit = m_unit; ///< 1毫米代表的实际长度 CSize8 scale; scale.cx = atof(m_strRealX)/atof(m_strPrintX); scale.cy = atof(m_strRealY)/atof(m_strPrintY); if(!PARAM().DoScaleSetDialog(scale, unit, !m_bNotSame, this)) return; m_unit = unit; AfxGetPublicFunction()->FloatToString(m_strRealX, scale.cx, 10); AfxGetPublicFunction()->FloatToString(m_strRealY, scale.cy, 10); m_strPrintX = "1"; m_strPrintY = "1"; UpdateData(FALSE); }