#include "stdafx.h" #include "ReducerDlg.h" IMPLEMENT_DYNAMIC(CReducerDlg, CDialog) CReducerDlg::CReducerDlg(CWnd* pParent /*=NULL*/) : CDialog(CReducerDlg::IDD, pParent) , m_nEcCen(0) , m_dW(100) , m_dH(100) , m_sEndW(_T("150")) , m_dL(200) , m_dAngle(60) , m_bAngleCal(FALSE) , m_nZECen(0) { } CReducerDlg::~CReducerDlg() { } void CReducerDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT5, m_dW); DDX_CBString(pDX, IDC_COMBO2, m_sEndW); DDX_CBString(pDX, IDC_COMBO3, m_sEndH); DDX_Text(pDX, IDC_EDIT6, m_dL); DDX_Text(pDX, IDC_EDIT7, m_dAngle); DDX_Text(pDX, IDC_EDIT8, m_dH); DDX_Check(pDX, IDC_CHECK1, m_bAngleCal); DDX_Control(pDX, IDC_EDIT6, m_wndEditL); DDX_Radio(pDX, IDC_RADIO1, m_nEcCen); DDX_Radio(pDX, IDC_RADIO4, m_nZECen); } BEGIN_MESSAGE_MAP(CReducerDlg, CDialog) ON_BN_CLICKED(IDOK, &CReducerDlg::OnBnClickedOk) ON_EN_KILLFOCUS(IDC_EDIT7, &CReducerDlg::OnEnKillfocusEdit7) //ON_CBN_SELENDOK(IDC_COMBO2, &CReducerDlg::OnCbnSelendokCombo2) ON_BN_CLICKED(IDC_CHECK1, &CReducerDlg::OnBnClickedCheck1) ON_CBN_CLOSEUP(IDC_COMBO2, &CReducerDlg::OnCbnCloseupCombo2) END_MESSAGE_MAP() BOOL CReducerDlg::OnInitDialog() { CDialog::OnInitDialog(); m_wndEditL.EnableWindow(!m_bAngleCal); UpdateData(FALSE); return TRUE; } void CReducerDlg::OnBnClickedOk() { UpdateData(); if ( fabs(_ttof(m_sEndW) - m_dW) < 1.e-2 && fabs(_ttof(m_sEndH) - m_dH) < 1.e-2) { AfxMessageBox(_T("变径首尾宽高不能相同!请重新选择宽高度!")); return; } if (m_dL < 10.0 ) { AfxMessageBox(_T("变径长度过小!请重新输入长度!")); return; } if (m_dAngle < 10.0) { AfxMessageBox(_T("变径角度过小!请重新输入角度!")); return; } OnOK(); } void CReducerDlg::SetCurWidth(double dW,double dL) { m_dW = dW; m_dL = dL; } void CReducerDlg::SetCurHeight(double dH) { m_dH = dH; m_sEndH.Format(_T("%d"),(int)(dH + 0.5)); } CPoint CReducerDlg::GetReducer(AcGePoint3d& ptSize,double& dEH) const { ptSize.x = m_dW; ptSize.y = _ttof(m_sEndW); ptSize.z = m_dL; dEH = _ttof(m_sEndH); CPoint ptEc; ptEc.x = m_nEcCen; ptEc.y = m_nZECen; return ptEc; } void CReducerDlg::OnEnKillfocusEdit7() { //计算变径长度 UpdateData(); if (m_bAngleCal) { double dWx = 0.5 * fabs(m_dW - _ttof(m_sEndW)); m_dL = (int)( tan(m_dAngle * PI / 180.0) * dWx + 0.5); UpdateData(FALSE); } } void CReducerDlg::OnBnClickedCheck1() { UpdateData(); m_wndEditL.EnableWindow(!m_bAngleCal); } void CReducerDlg::OnCbnCloseupCombo2() { //计算变径长度 UpdateData(); if (m_bAngleCal) { double dWx = 0.5 * fabs(m_dW - _ttof(m_sEndW)); m_dL = (int)( tan(m_dAngle * PI / 180.0) * dWx + 0.5); UpdateData(FALSE); } }