#include "stdafx.h" #include "MultPlaceTreeDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // 初始化对话框中的全局变量 BOOL CMultPlaceTreeDlg::m_bSameDis = FALSE; BOOL CMultPlaceTreeDlg::m_bSameRad = FALSE; int CMultPlaceTreeDlg::m_iTreeType = 0; double CMultPlaceTreeDlg::m_dRadMin = 800.0; double CMultPlaceTreeDlg::m_dRadMax = 1500.0; double CMultPlaceTreeDlg::m_dDisMin = 1000.0; double CMultPlaceTreeDlg::m_dDisMax = 2000.0; CMultPlaceTreeDlg::CMultPlaceTreeDlg(CWnd* pParent /*=NULL*/) : CModelessDialog(CMultPlaceTreeDlg::IDD, pParent) { //{{AFX_DATA_INIT(CMultPlaceTreeDlg) //}}AFX_DATA_INIT m_csRadMin = GetFormatData(m_dRadMin); m_csRadMax = GetFormatData(m_dRadMax); m_csDisMin = GetFormatData(m_dDisMin); m_csDisMax = GetFormatData(m_dDisMax); } // 根据需求修改编辑框中的数据格式 CString CMultPlaceTreeDlg::GetFormatData(double dData) { CString csTemp; if (DocGetMeterUnitDraw()) { csTemp.Format(_T("%.1f"), _AS_SYS_UNIT(dData)); } else { csTemp.Format(_T("%.0f"), _AS_SYS_UNIT(dData)); } return csTemp; } CMultPlaceTreeDlg::~CMultPlaceTreeDlg() { m_dRadMin = _AS_MM(_tstof(m_csRadMin)); m_dRadMax = _AS_MM(_tstof(m_csRadMax)); m_dDisMin = _AS_MM(_tstof(m_csDisMin)); m_dDisMax = _AS_MM(_tstof(m_csDisMax)); } void CMultPlaceTreeDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMultPlaceTreeDlg) DDX_Text(pDX, IDC_EDIT_RADMIN, m_csRadMin); DDX_Text(pDX, IDC_EDIT_RADMAX, m_csRadMax); DDX_Text(pDX, IDC_EDIT_DISMIN, m_csDisMin); DDX_Text(pDX, IDC_EDIT_DISMAX, m_csDisMax); DDX_Check(pDX, IDC_CHK_SAMEDIS,m_bSameDis); DDX_Check(pDX, IDC_CHK_SAMERAD,m_bSameRad); DDX_Radio(pDX, IDC_RAD_TREEONE, m_iTreeType); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CMultPlaceTreeDlg, CModelessDialog) //{{AFX_MSG_MAP(CMultPlaceTreeDlg) ON_BN_CLICKED(IDC_CHK_SAMEDIS, OnChkSamedis) ON_BN_CLICKED(IDC_CHK_SAMERAD, OnChkSamerad) ON_WM_PAINT() ON_BN_CLICKED(IDC_RAD_TREEONE, OnRadioTree) ON_BN_CLICKED(IDC_RAD_TREETWO, OnRadioTree) ON_BN_CLICKED(IDC_RAD_TREETHREE, OnRadioTree) ON_BN_CLICKED(IDC_RAD_TREEFOUR, OnRadioTree) ON_EN_KILLFOCUS(IDC_EDIT_RADMIN, OnKillfocusRadMin) ON_EN_KILLFOCUS(IDC_EDIT_RADMAX, OnKillfocusRadMax) ON_EN_KILLFOCUS(IDC_EDIT_DISMIN, OnKillfocusDisMin) ON_EN_KILLFOCUS(IDC_EDIT_DISMAX, OnKillfocusDisMax) //}}AFX_MSG_MAP END_MESSAGE_MAP() BOOL CMultPlaceTreeDlg::OnInitDialog() { CDialog::OnInitDialog(); UpdateData(TRUE); // 设置幻灯片 SetPicture(); // 获取当前的绘图单位 bIsMetre=true:M;bIsMetre=false:mm BOOL bIsMetre = DocGetMeterUnitDraw(); if (bIsMetre) { this->SetWindowText(_T("成片布树(单位:M)")); // 对话框标题设置 } else { this->SetWindowText(_T("成片布树(单位:mm)")); } // 固定半径被选 GetDlgItem(IDC_EDIT_DISMAX)->EnableWindow(!m_bSameDis); // 固定间距被选 GetDlgItem(IDC_EDIT_RADMAX)->EnableWindow(!m_bSameRad); return TRUE; } // 固定间距的实现 void CMultPlaceTreeDlg::OnChkSamedis() { UpdateData(); GetDlgItem(IDC_EDIT_DISMAX)->EnableWindow(!m_bSameDis); } // 固定半径的实现 void CMultPlaceTreeDlg::OnChkSamerad() { UpdateData(); GetDlgItem(IDC_EDIT_RADMAX)->EnableWindow(!m_bSameRad); } // 树形切换 void CMultPlaceTreeDlg::OnRadioTree() { UpdateData(); SetPicture(); // 设置幻灯片 } // 设置幻灯片显示 void CMultPlaceTreeDlg::SetPicture() { XString sFilePath(256); if (m_iTreeType == 0) // 树形1 { sFilePath << _T("TArch(multplacetree01)"); } else if (m_iTreeType == 1) // 树形2 { sFilePath << _T("TArch(multplacetree02)"); } else if(m_iTreeType == 2) // 树形3 { sFilePath << _T("TArch(multplacetree03)"); } else if(m_iTreeType == 3) // 树形4 { sFilePath << _T("TArch(multplacetree04)"); } // 获得图片控件 CWnd* pWndBmp = GetDlgItem(IDC_STATIC_PREVIEW); ASSERT(pWndBmp); // 获得图片区域 CDC *pDC = pWndBmp->GetDC(); CRect rect; pWndBmp->GetClientRect(rect); m_imgPreview.InitDC(pDC, rect, GetAcadBackColor()); m_imgPreview.PaintSlide(sFilePath); m_imgPreview.SetDC(NULL); pWndBmp->ReleaseDC(pDC); } // 窗口重绘消息 void CMultPlaceTreeDlg::OnPaint() { CPaintDC dc(this); CRect rcClip, rcImage; dc.GetClipBox(&rcClip); CWnd *pImageBox = GetDlgItem(IDC_STATIC_PREVIEW); if (pImageBox) { pImageBox->GetWindowRect(&rcImage); ScreenToClient(&rcImage); if (!rcImage.IntersectRect(&rcImage, &rcClip)) return; CDC *pDC = pImageBox->GetDC(); m_imgPreview.SetDC(pDC); m_imgPreview.Redraw(); m_imgPreview.SetDC(NULL); pImageBox->ReleaseDC(pDC); } } // 修改树形半径 void CMultPlaceTreeDlg::OnKillfocusRadMin() { UpdateData(); if (IsDigital(m_csRadMin) || m_csRadMin.Find(_T("."), 0)>0) { m_dRadMin = _AS_MM(GetRadMin()); } else { MessageBox(_T("请输入数字!")); } m_csRadMin = GetFormatData(m_dRadMin); UpdateData(FALSE); } void CMultPlaceTreeDlg::OnKillfocusRadMax() { UpdateData(); if (IsDigital(m_csRadMax) || m_csRadMax.Find(_T("."), 0)>0) { m_dRadMax = _AS_MM(GetRadMax()); } else { MessageBox(_T("请输入数字!")); } m_csRadMax = GetFormatData(m_dRadMax); UpdateData(FALSE); } // 修改树间距 void CMultPlaceTreeDlg::OnKillfocusDisMin() { UpdateData(); if (IsDigital(m_csDisMin) || m_csDisMin.Find(_T("."), 0)>0) { m_dDisMin = _AS_MM(GetDisMin()); } else { MessageBox(_T("请输入数字!")); } m_csDisMin = GetFormatData(m_dDisMin); UpdateData(FALSE); } void CMultPlaceTreeDlg::OnKillfocusDisMax() { UpdateData(); if (IsDigital(m_csDisMax) || m_csDisMax.Find(_T("."), 0)>0) { m_dDisMax = _AS_MM(GetDisMax()); } else { MessageBox(_T("请输入数字!")); } m_csDisMax = GetFormatData(m_dDisMax); UpdateData(FALSE); } double CMultPlaceTreeDlg::GetDisMax() const { return _tstof(m_csDisMax); } double CMultPlaceTreeDlg::GetDisMin() const { return _tstof(m_csDisMin); } double CMultPlaceTreeDlg::GetRadMax() const { return _tstof(m_csRadMax); } double CMultPlaceTreeDlg::GetRadMin() const { return _tstof(m_csRadMin); }