#include "stdafx.h" #include "TydfDlg.h" #include "PipelineTools.h" IMPLEMENT_DYNAMIC(CTydfDlg, CDialog) CTydfDlg::CTydfDlg(CWnd* pParent /*=NULL*/) : CDialog(CTydfDlg::IDD, pParent) , m_dH(400) , m_dR(100) , m_dW(500) , m_dL(500) , m_dXOffset(0) , m_pData(NULL) , m_clr(256) , m_bSub(FALSE) { GET_CACHE(CTydfDlg, %f%f%f%f%f%d, &m_dH, &m_dR, &m_dW, &m_dL, &m_dXOffset, &m_clr); } CTydfDlg::~CTydfDlg() { } void CTydfDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDITH, m_dH); DDX_Text(pDX, IDC_EDITR, m_dR); DDX_Text(pDX, IDC_EDITW, m_dW); DDX_Text(pDX, IDC_EDITL, m_dL); DDX_Text(pDX, IDC_EDITXOFFSET, m_dXOffset); DDX_Check(pDX, IDC_CHECK_SUB, m_bSub); } BEGIN_MESSAGE_MAP(CTydfDlg, CDialog) ON_BN_CLICKED(IDOK, &CTydfDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_STATIC_COLOR, OnStaticColor) ON_WM_CTLCOLOR() END_MESSAGE_MAP() BOOL CTydfDlg::OnInitDialog() { CDialog::OnInitDialog(); if (m_pData != NULL) { AecEqui::XTydf* pTydf = (AecEqui::XTydf*)m_pData; m_dH = pTydf->dH; m_dR = pTydf->dTR; m_dL = pTydf->dTL; m_dW = pTydf->dTW; m_dXOffset = pTydf->dXOffset; } UpdateData(FALSE); return TRUE; } void CTydfDlg::OnBnClickedOk() { UpdateData(); if (m_dH < 1.e-3 || m_dR < 1.e-3 || m_dW < 1.e-3 || m_dL < 1.e-3) { AfxMessageBox(_T("天圆地方的尺寸不能为0,请重新输入参数!")); return; } if (m_pData != NULL) { AecEqui::XTydf* pTydf = (AecEqui::XTydf*)m_pData; pTydf->dH = m_dH; pTydf->dTR = m_dR; pTydf->dTL = m_dL; pTydf->dTW = m_dW; pTydf->dXOffset = m_dXOffset; } SET_CACHE(CTydfDlg, %f%f%f%f%f%d, m_dH, m_dR, m_dW, m_dL, m_dXOffset, m_clr); OnOK(); } void CTydfDlg::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 CTydfDlg::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; }