#include "stdafx.h" #include "PyrmDlg.h" #include "EarThwormDef.h" IMPLEMENT_DYNAMIC(CPyrmDlg, CDialog) CPyrmDlg::CPyrmDlg(CWnd* pParent /*=NULL*/) : CDialog(CPyrmDlg::IDD, pParent) , m_dTH(500) , m_dTx(200) , m_dTy(300) , m_dBx(400) , m_dBy(500) , m_dXOffset(0) , m_bIs90Tr(FALSE) , m_pData(NULL) , m_clr(256) , m_bSub(FALSE) { GET_CACHE(CPyrmDlg , %f%f%f%f%f%f%d%d , &m_dTH , &m_dTx , &m_dTy , &m_dBx , &m_dBy , &m_dXOffset , &m_bIs90Tr , &m_clr); } CPyrmDlg::~CPyrmDlg() { } void CPyrmDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDITH, m_dTH); DDX_Text(pDX, IDC_EDITTX, m_dTx); DDX_Text(pDX, IDC_EDITTY, m_dTy); DDX_Text(pDX, IDC_EDITBX, m_dBx); DDX_Text(pDX, IDC_EDITBY, m_dBy); DDX_Text(pDX, IDC_EDITHXOFF, m_dXOffset); DDX_Check(pDX, IDC_CHECK90, m_bIs90Tr); DDX_Check(pDX, IDC_CHECK_SUB, m_bSub); } BEGIN_MESSAGE_MAP(CPyrmDlg, CDialog) ON_BN_CLICKED(IDOK, &CPyrmDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_CHECK90, &CPyrmDlg::OnBnClickedCheck90) ON_BN_CLICKED(IDC_STATIC_COLOR, OnStaticColor) ON_WM_CTLCOLOR() END_MESSAGE_MAP() BOOL CPyrmDlg::OnInitDialog() { CDialog::OnInitDialog(); if (m_pData != NULL) { AecEqui::XPyramid* pPyr = (AecEqui::XPyramid*)m_pData; m_dTx = pPyr->dTX; m_dTy = pPyr->dTY; m_dBx = pPyr->dBX; m_dBy = pPyr->dBY; m_dTH = pPyr->dH; m_dXOffset = pPyr->dXOffset; } UpdateData(FALSE); return TRUE; } void CPyrmDlg::OnBnClickedOk() { UpdateData(); if ( (m_dBx + m_dBy) < 1.e-3 || (m_dBx * m_dBy )> 1.e-3 ) { } else { AfxMessageBox(_T("方台的底边尺寸必须都大于0 或都为0,请重新输入数据!")); return; } if ( (m_dTx + m_dTy ) < 1.e-3 || (m_dTx * m_dTy ) > 1.e-3) { } else { AfxMessageBox(_T("方台的顶边尺寸必须都大于0 或都为0,请重新输入数据!")); return; } if (m_dTx + m_dBx < 1.e-3) { AfxMessageBox(_T("方台的顶底边尺寸不能都为0,请重新输入数据!")); return; } if (m_dTH < 1.e-3) { AfxMessageBox(_T("方台的高度尺寸数据必须大于0,请重新输入数据!")); return; } if (m_pData != NULL) { AecEqui::XPyramid* pPyr = (AecEqui::XPyramid*)m_pData; pPyr->dTX = m_dTx; pPyr->dTY = m_dTy; pPyr->dBX = m_dBx; pPyr->dBY = m_dBy; pPyr->dH = m_dTH; pPyr->dXOffset = m_dXOffset; } SET_CACHE(CPyrmDlg , %f%f%f%f%f%f%d%d , m_dTH , m_dTx , m_dTy , m_dBx , m_dBy , m_dXOffset , m_bIs90Tr , m_clr); OnOK(); } void CPyrmDlg::OnBnClickedCheck90() { UpdateData(); if (m_bIs90Tr) { m_dXOffset = (m_dBx - m_dTx) / 2.0; UpdateData(FALSE); } } void CPyrmDlg::OnStaticColor() { AcCmColor clr; #if ARX < 24 clr.setColorMethod(AcCmEntityColor::kByACI); #endif clr.setColorIndex(256); if (acedSetColorDialogTrueColor(clr, Adesk::kTrue, clr, (AcCm::DialogTabs)(AcCm::kACITab)) == Adesk::kFalse) return; m_clr = clr.colorIndex(); Invalidate(); } HBRUSH CPyrmDlg::OnCtlColor(CDC * pDC, CWnd * pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (nCtlColor == CTLCOLOR_STATIC) { if (pWnd != NULL && pWnd->GetDlgCtrlID() == IDC_STATIC_COLOR) { CRect rc; pWnd->GetClientRect(rc); pDC->FillSolidRect(rc, acedGetRGB(m_clr)); } } return hbr; }