#include "stdafx.h" #include "DrawRoadDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // 初始化全局变量 double CDrawRoadDlg::m_dLeftWidthMM = 2000.0; // 左宽 double CDrawRoadDlg::m_dRightWidthMM = 2000.0; // 右宽 double CDrawRoadDlg::m_dChamferRadiusMM = 5000.0; // 倒角半径 BOOL CDrawRoadDlg::m_bChamfer = TRUE; BOOL CDrawRoadDlg::m_bDrawCenLine = TRUE; int CDrawRoadDlg::m_iPositionLineStyle = 0; int CDrawRoadDlg::m_iFilletStyle = 0; CDrawRoadDlg::CDrawRoadDlg(CWnd* pParent /*=NULL*/) : CModelessDialog(CDrawRoadDlg::IDD, pParent) { //{{AFX_DATA_INIT(CDrawRoadDlg) m_dLeftWidth = _AS_SYS_UNIT(m_dLeftWidthMM); m_dRightWidth = _AS_SYS_UNIT(m_dRightWidthMM); m_dChamferRadius = _AS_SYS_UNIT(m_dChamferRadiusMM); //}}AFX_DATA_INIT m_nCmdNum = 1; } CDrawRoadDlg::~CDrawRoadDlg() { } void CDrawRoadDlg::DoDataExchange(CDataExchange* pDX) { CModelessDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDrawRoadDlg) DDX_Radio(pDX, IDC_RAD_BASELINE, m_iPositionLineStyle); DDX_Text(pDX, IDC_EDT_LEFTWIDTH, m_dLeftWidth); DDX_Text(pDX, IDC_EDT_RIGHTWIDTH, m_dRightWidth); DDX_Text(pDX, IDC_EDT_CHAMFER_RADIUS, m_dChamferRadius); DDX_Check(pDX, IDC_CHK_CENTRELINE, m_bDrawCenLine); DDX_Check(pDX, IDC_CHK_CHARMFER, m_bChamfer); DDX_Radio(pDX, IDC_RAD_SAME_CENTER, m_iFilletStyle); //}}AFX_DATA_MAP m_dLeftWidthMM = _AS_MM(m_dLeftWidth); m_dRightWidthMM = _AS_MM(m_dRightWidth); m_dChamferRadiusMM = _AS_MM(m_dChamferRadius); } BEGIN_MESSAGE_MAP(CDrawRoadDlg, CModelessDialog) //{{AFX_MSG_MAP(CDrawRoadDlg) ON_WM_CLOSE() ON_WM_DESTROY() ON_BN_CLICKED(IDC_CHK_CHARMFER, OnBnClickedChkCharmfer) ON_EN_KILLFOCUS(IDC_EDT_CHAMFER_RADIUS, OnEnKillfocusEdtChamferRadius) //}}AFX_MSG_MAP END_MESSAGE_MAP() void CDrawRoadDlg::SetCharmerBtnState(BOOL bEnable) { GetDlgItem(IDC_RAD_SAME_CENTER)->EnableWindow(bEnable); GetDlgItem(IDC_RAD_SAME_RADIUS)->EnableWindow(bEnable); GetDlgItem(IDC_EDT_CHAMFER_RADIUS)->EnableWindow(bEnable); } BOOL CDrawRoadDlg::OnInitDialog() { CModelessDialog::OnInitDialog(); // 获取当前的绘图单位 bIsMetre=true:M;bIsMetre=false:mm BOOL bIsMetre = DocGetMeterUnitDraw(); // 对话框标题设置 if(bIsMetre) { this->SetWindowText(_T("道路绘制(单位:M)")); } else { this->SetWindowText(_T("道路绘制(单位:mm)")); } SetCharmerBtnState(m_bChamfer); return TRUE; } void CDrawRoadDlg::OnClose() { CModelessDialog::OnClose(); if (m_nCmdNum > 1) { acedPostCommand(_T("\33")); } if (m_nCmdNum == 2) { acedPostCommand(_T("\33")); } } void CDrawRoadDlg::OnDestroy() { CModelessDialog::OnDestroy(); } double CDrawRoadDlg::GetLeftWidthMM() { UpdateData(TRUE); return m_dLeftWidthMM; } double CDrawRoadDlg::GetRightWidthMM() { UpdateData(TRUE); return m_dRightWidthMM; } double CDrawRoadDlg::GetCharmRadiusMM() { UpdateData(TRUE); return m_dChamferRadiusMM; } double CDrawRoadDlg::GetLeftWidthSys() { return _AS_SYS_UNIT(GetLeftWidthMM()); } double CDrawRoadDlg::GetRightWidthSys() { return _AS_SYS_UNIT(GetRightWidthMM()); } double CDrawRoadDlg::GetCharmRadiusSys() { return _AS_SYS_UNIT(GetCharmRadiusMM()); } // 是否倒角 void CDrawRoadDlg::OnBnClickedChkCharmfer() { // UpdateData(true); // 设置关于倒角方式的几个按钮。 CButton *pcheck = (CButton*)GetDlgItem(IDC_CHK_CHARMFER); UINT uStat = pcheck->GetCheck(); SetCharmerBtnState(uStat); } CDrawRoadDlg::EPositionLineType CDrawRoadDlg::PositionLineStyle() { UpdateData(TRUE); return EPositionLineType(m_iPositionLineStyle);// 转换为枚举。 } EFilletStyle CDrawRoadDlg::FilletStyle() { UpdateData(TRUE); if (m_iFilletStyle == 0) return eSameCenter; else if (m_iFilletStyle == 1) return eSameRadius; return EFilletStyle(m_iFilletStyle) ; } //axc add 2015-10-19 当倒角半径为空时防止UpdateData更新数据时不断弹出错误提示 void CDrawRoadDlg::OnEnKillfocusEdtChamferRadius() { CString sValue = _T(""); GetDlgItem(IDC_EDT_CHAMFER_RADIUS)->GetWindowText(sValue); if (sValue.IsEmpty()) { sValue = _T("1000"); GetDlgItem(IDC_EDT_CHAMFER_RADIUS)->SetWindowText(sValue); } UpdateData(TRUE); }