282 lines
5.8 KiB
C++
282 lines
5.8 KiB
C++
#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);
|
||
}
|