// DimAxisLabelDlg.cpp : implementation file // #include "stdafx.h" #include "resource.h" #include "DimAxisLabelDlg.h" GEOAPI int DisplaySlide(CWnd *pWnd, const char *pszSlide); #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDimAxisLabelDlg dialog CDimAxisLabelDlg::CDimAxisLabelDlg(CWnd* pParent /*=NULL*/) : CModelessDialog(CDimAxisLabelDlg::IDD, pParent) { //{{AFX_DATA_INIT(CDimAxisLabelDlg) m_dimFlag = 0; m_labelFlag = 0; m_csLabel = _T(""); m_bPrevLink = FALSE; //}}AFX_DATA_INIT } void CDimAxisLabelDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDimAxisLabelDlg) DDX_Radio(pDX, IDC_CURDIM, m_dimFlag); DDX_Radio(pDX, IDC_CURLABEL, m_labelFlag); DDX_Text(pDX, IDC_LABEL, m_csLabel); DDX_Check(pDX, IDC_PREVLINK, m_bPrevLink); //}}AFX_DATA_MAP if(!pDX->m_bSaveAndValidate) { GetDlgItem(IDC_LABEL)->EnableWindow(!m_bPrevLink); ShowSlide(); } } BEGIN_MESSAGE_MAP(CDimAxisLabelDlg, CModelessDialog) //{{AFX_MSG_MAP(CDimAxisLabelDlg) ON_WM_PAINT() ON_BN_CLICKED(IDC_PREVLINK, OnDlgItemChange) ON_BN_CLICKED(IDC_CURDIM, OnDlgItemChange) ON_BN_CLICKED(IDC_OTHERDIM, OnDlgItemChange) ON_BN_CLICKED(IDC_BOTHDIM, OnDlgItemChange) ON_BN_CLICKED(IDC_CURLABEL, OnDlgItemChange) ON_BN_CLICKED(IDC_OTHERLABEL, OnDlgItemChange) ON_BN_CLICKED(IDC_BOTHLABEL, OnDlgItemChange) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDimAxisLabelDlg message handlers BOOL CDimAxisLabelDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDimAxisLabelDlg::ShowSlide() { XString m_strFilePath; CWnd *pImageBox=GetDlgItem(IDC_SLIDE); if(pImageBox) { // 1--当前轴标,当前尺寸 // 2--另一轴标,当前尺寸 // 3--两侧轴标,当前尺寸 // 4--当前轴标,另一尺寸 // 5--另一轴标,另一尺寸 // 6--两侧轴标,另一尺寸 // 7--当前轴标,双侧尺寸 // 8--另一轴标,双侧尺寸 // 9--两侧轴标,双侧尺寸 int nIdx=0; if(m_labelFlag==0 && m_dimFlag==0) nIdx=1; else if(m_labelFlag==1 && m_dimFlag==0) nIdx=2; else if(m_labelFlag==2 && m_dimFlag==0) nIdx=3; else if(m_labelFlag==0 && m_dimFlag==1) nIdx=4; else if(m_labelFlag==1 && m_dimFlag==1) nIdx=5; else if(m_labelFlag==2 && m_dimFlag==1) nIdx=6; else if(m_labelFlag==0 && m_dimFlag==2) nIdx=7; else if(m_labelFlag==1 && m_dimFlag==2) nIdx=8; else if(m_labelFlag==2 && m_dimFlag==2) nIdx=9; XString sLabelSlide; sLabelSlide << "AxisLab" << nIdx; //if(!FindFile(sLabelSlide, m_strFilePath)) { // return; //} m_strFilePath << "TArch(" << sLabelSlide << ")"; CDC *pDC=pImageBox->GetDC(); CRect rc; pImageBox->GetClientRect(&rc); m_slideDc.InitDC(pDC, rc, GetAcadBackColor()); m_slideDc.PaintSlide(m_strFilePath); m_slideDc.SetDC(NULL); pImageBox->ReleaseDC(pDC); //DisplaySlide(pImageBox, sLabelSlide); } } void CDimAxisLabelDlg::OnPaint() { CPaintDC dc(this); // device context for painting CRect rcClip, rcImage; dc.GetClipBox(&rcClip); CWnd *pImageBox=GetDlgItem(IDC_SLIDE); if(pImageBox) { pImageBox->GetWindowRect(&rcImage); ScreenToClient(&rcImage); if(!rcImage.IntersectRect(&rcImage, &rcClip)) return; CDC *pDC=pImageBox->GetDC(); m_slideDc.SetDC(pDC); m_slideDc.Redraw(); m_slideDc.SetDC(NULL); pImageBox->ReleaseDC(pDC); } // Do not call CDialog::OnPaint() for painting messages } void CDimAxisLabelDlg::OnDlgItemChange() { UpdateData(TRUE); UpdateData(FALSE); }