#include "stdafx.h" #include "XGXGDlg.h" IMPLEMENT_DYNAMIC(CXGXGDlg, CDialog) CXGXGDlg::CXGXGDlg(CWnd* pParent /*=NULL*/) : CDialog(CXGXGDlg::IDD, pParent) , m_dGradNew(0) { } CXGXGDlg::~CXGXGDlg() { } void CXGXGDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_dGrad); DDX_Text(pDX, IDC_EDIT3, m_dGradNew); } BEGIN_MESSAGE_MAP(CXGXGDlg, CDialog) ON_BN_CLICKED(IDOK, &CXGXGDlg::OnBnClickedOk) END_MESSAGE_MAP() BOOL CXGXGDlg::OnInitDialog() { CDialog::OnInitDialog(); UpdateData(FALSE); return TRUE; } void CXGXGDlg::SetStartAndEndZ(double dSz,double dEz,double dXL) { //坡度:两点的高程差与其水平距离的百分比 m_dGradNew = (dEz - dSz) / dXL; m_dGradNew *= 100.0; m_dGrad = m_dGradNew; } void CXGXGDlg::OnBnClickedOk() { UpdateData(); //要求坡度同符号 if ( m_dGradNew * m_dGrad < -1.e-10) { AfxMessageBox(_T("坡度不可以反向!")); return; } OnOK(); } bool CXGXGDlg::GetGrade(double& dGrade) const { dGrade = m_dGradNew; if ( fabs(dGrade - m_dGrad) < 1.e-6) { return false; } return true; }