#include "stdafx.h" #include "ConeDLg.h" #include "EarThwormDef.h" IMPLEMENT_DYNAMIC(CConeDLg, CDialog) CConeDLg::CConeDLg(CWnd* pParent /*=NULL*/) : CDialog(CConeDLg::IDD, pParent) , m_dr(100) , m_dR(300) , m_dH(400) , m_dXOffset(0) , m_bIs90Tr(FALSE) , m_pData(NULL) , m_clr(256) , m_bSub(FALSE) { GET_CACHE(CConeDLg, %f%f%f%f%d%d, &m_dr, &m_dR, &m_dH, &m_dXOffset, &m_bIs90Tr, &m_clr); return; } CConeDLg::~CConeDLg() { } void CConeDLg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDITR1, m_dr); DDX_Text(pDX, IDC_EDITR2, m_dR); DDX_Text(pDX, IDC_EDITH, m_dH); DDX_Text(pDX, IDC_EDITXOFFSET, m_dXOffset); DDX_Check(pDX, IDC_CHECK90, m_bIs90Tr); DDX_Check(pDX, IDC_CHECK_SUB, m_bSub); } BEGIN_MESSAGE_MAP(CConeDLg, CDialog) ON_BN_CLICKED(IDOK, &CConeDLg::OnBnClickedOk) ON_BN_CLICKED(IDC_CHECK90, &CConeDLg::OnBnClickedCheck90) ON_BN_CLICKED(IDC_STATIC_COLOR, OnStaticColor) ON_WM_CTLCOLOR() END_MESSAGE_MAP() BOOL CConeDLg::OnInitDialog() { CDialog::OnInitDialog(); if (m_pData != NULL) { AecEqui::XCone* pCone = (AecEqui::XCone*)m_pData; m_dr = pCone->dr; m_dR = pCone->dR; m_dH = pCone->dH; m_dXOffset = pCone->dXOffset; } UpdateData(FALSE); return TRUE; } void CConeDLg::OnBnClickedOk() { UpdateData(); if (m_dr < 1.e-3 && m_dR < 1.e-3 ) { AfxMessageBox(_T("圆台的顶半径和底半径至少其一大于0,请重新输入数据!")); return; } if (m_dH < 1.e-3) { AfxMessageBox(_T("圆台的高度尺寸数据必须大于0,请重新输入数据!")); return; } if (m_pData != NULL) { AecEqui::XCone* pCone = (AecEqui::XCone*)m_pData; pCone->dr = m_dr; pCone->dR = m_dR; pCone->dH = m_dH; pCone->dXOffset = m_dXOffset; } SET_CACHE(CConeDLg, %f%f%f%f%d%d, m_dr, m_dR, m_dH, m_dXOffset, m_bIs90Tr, m_clr); OnOK(); } void CConeDLg::OnBnClickedCheck90() { UpdateData(); if (m_bIs90Tr) { m_dXOffset = m_dr - m_dR; UpdateData(FALSE); } } void CConeDLg::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 CConeDLg::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; }