#include "StdAfx.h" #include "SectionDlg.h" CString CSectionDlg::m_strSectionNum = _T("1"); CString CSectionDlg::m_strStyle = GetTextStyleName(TS_SECTION); //默认剖切编号文字样式 CString CSectionDlg::m_strHeight = _T("5.0"); int CSectionDlg::m_bCheck = FALSE; CString CSectionDlg::m_strDrawingNum = _T("1"); int CSectionDlg::m_iLocal = 0; int CSectionDlg::m_iDirect = 0; CString CSectionDlg::m_strDrawingHeight = _T("3.5"); CString CSectionDlg::m_strTextStyle = GetTextStyleName(TS_INDEXSCALE);//默认剖切图号文字样式 int CSectionDlg::m_nSectionMode = 1; IMPLEMENT_DYNAMIC(CSectionDlg, CModelessDialog) CSectionDlg::CSectionDlg(CWnd *pParent) :CModelessDialog(CSectionDlg::IDD, pParent) { m_bStyeChange =FALSE; //是否改变绘制剖切图号的样式,默认没有改变 } CSectionDlg::~CSectionDlg(void) { } BEGIN_MESSAGE_MAP(CSectionDlg, CModelessDialog) ON_BN_CLICKED(ID_BTN_A, OnBtnBlickA) ON_BN_CLICKED(ID_BTN_B, OnBtnBlickB) ON_BN_CLICKED(ID_BTN_C, OnBtnBlickC) ON_BN_CLICKED(ID_BTN_D, OnBtnBlickD) ON_BN_CLICKED(IDC_CHK_DRAWING, OnBnClickDrawNum) ON_BN_CLICKED(IDC_BTN_WORDHIGHT, OnBnClickedBtnWordhight) ON_BN_CLICKED(IDC_BTN_DRAWINGHEIGHT, OnBnClickedBtnDrawingheight) ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText) ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText) END_MESSAGE_MAP() void CSectionDlg::DoDataExchange(CDataExchange* pDX) { CModelessDialog::DoDataExchange(pDX); DDX_CBString(pDX, IDC_CMB_SECTIONNUM, m_strSectionNum); if(pDX->m_bSaveAndValidate) { DDX_CBString(pDX, IDC_CMB_SECTIONTEXT, m_strStyle); } else { GetDlgItem(IDC_CMB_SECTIONTEXT)->SetWindowText(m_strStyle); } DDX_CBString(pDX, IDC_CMB_WORDHEIGHT, m_strHeight); DDX_Text(pDX, IDC_EDT_DRAWINGNUM, m_strDrawingNum); DDX_CBIndex(pDX, IDC_CMB_SECTIONPOSITION, m_iLocal); DDX_CBIndex(pDX, IDC_CMB_SECTIONDIRECT, m_iDirect); DDX_CBString(pDX, IDC_CMB_DRAWINGHEIGHT, m_strDrawingHeight); if(pDX->m_bSaveAndValidate) { DDX_CBString(pDX, IDC_CMB_DRAWTEXTSTYLE, m_strTextStyle); } DDX_Check(pDX, IDC_CHK_DRAWING, m_bCheck); DDX_Control(pDX, IDC_CMB_DRAWTEXTSTYLE, m_cmbDrawStyle); DDX_Control(pDX, IDC_CMB_SECTIONTEXT, m_cmbStyleName); } BOOL CSectionDlg::OnInitDialog() { CModelessDialog::OnInitDialog(); createToolBar(); //创建绘制方式工具条 LoadTextStyle(); //加载文字样式 OnBnClickDrawNum(); AddTip(IDC_STATIC_LOC, _T("设置剖面图号是标注在剖切符号的两端还是其中一端")); AddTip(IDC_STATIC_DIR, _T("设置剖面图号的文字方向是沿剖切方向还是剖视方向")); CheckTypeButton(); //add by lgy 20120525 按钮状态设置 UpdateData(FALSE); return TRUE; } void CSectionDlg::createToolBar() { UINT buttonID[]={ID_BTN_A, ID_BTN_B, ID_BTN_C, ID_BTN_D}; CAcModuleResourceOverride vTmp; m_toolbar.Create( WS_VISIBLE | WS_CHILD | CCS_BOTTOM | TBSTYLE_TOOLTIPS | CCS_ADJUSTABLE ,CRect(0,0,0,0),this, IDR_SECTION); TBBUTTON *pIndex, *pRTF_Button = new TBBUTTON[20]; pIndex = pRTF_Button; for(long lIndex = 0; lIndex < 4; lIndex++) //创建四个按钮控件 { memset(pIndex ,NULL, sizeof(TBBUTTON)); pIndex->iBitmap = lIndex; pIndex->idCommand = buttonID[lIndex]; pIndex->fsStyle = TBSTYLE_CHECKGROUP; pIndex->fsState = TBSTATE_ENABLED; pIndex++; } CSize size(16, 15); m_toolbar.SetButtonSize(size); m_toolbar.AddButtons(4, pRTF_Button); // sg delete 120613,解决64位下的崩溃问题 //delete pIndex; delete[] pRTF_Button; m_toolbar.SetBitmapSize(size); m_toolbar.ModifyStyle(0,TBSTYLE_FLAT); m_toolbar.AddBitmap(4, IDR_SECTION); } //add by lgy 20120525 设置按钮状态 void CSectionDlg::CheckTypeButton() { m_toolbar.CheckButton(ID_BTN_A, m_nSectionMode == 1); m_toolbar.CheckButton(ID_BTN_B, m_nSectionMode == 2); m_toolbar.CheckButton(ID_BTN_C, m_nSectionMode == 3); m_toolbar.CheckButton(ID_BTN_D, m_nSectionMode == 4); } BOOL CSectionDlg::DestroyWindow() { UpdateData(TRUE); return CModelessDialog::DestroyWindow(); } BOOL CSectionDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult) { ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW); if (GetRoutingFrame() != NULL) return FALSE; TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR; TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR; CString strTipText; UINT nID = (UINT)pNMHDR->idFrom; if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) || pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND)) { return FALSE; } if (nID != 0) { { CAcModuleResourceOverride vTmp; strTipText.LoadString(nID); } #ifndef _UNICODE if (pNMHDR->code == TTN_NEEDTEXTA) { lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText)); } else { _mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText)); } #else if (pNMHDR->code == TTN_NEEDTEXTA) { _wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText)); } else { lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText)); } #endif *pResult = 0; ::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE| SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); return TRUE; } return TRUE; } void CSectionDlg::LoadTextStyle() //加载文字样式 { XSymbolList lstStyle(_T("STYLE")); for (int m =0; m < lstStyle.Length(); m++) { m_cmbStyleName.AddString(lstStyle[m]); m_cmbDrawStyle.AddString(lstStyle[m]); } // sg modify 120706,增加一个判断,如果当前记忆的样式没有的话,那么使用上华固定的文字样式 //m_cmbStyleName.SetCurSel(m_cmbStyleName.FindStringExact(0, m_strStyle)); //m_cmbDrawStyle.SetCurSel(m_cmbDrawStyle.FindStringExact(0, m_strTextStyle)); int nRet = m_cmbStyleName.FindStringExact(0, m_strStyle); if (nRet < 0) { nRet = m_cmbStyleName.FindStringExact(0, _T("_TCH_LABEL")); } m_cmbStyleName.SetCurSel(nRet); nRet = m_cmbDrawStyle.FindStringExact(0, m_strTextStyle); if (nRet < 0) { nRet = m_cmbDrawStyle.FindStringExact(0, _T("_TCH_DIM")); } m_cmbDrawStyle.SetCurSel(nRet); } void CSectionDlg::OnBtnBlickA() { UpdateData(TRUE); m_nSectionMode = 1; //剖面剖切 m_bStyeChange = true; CheckTypeButton(); //add by lgy 20120525 按钮状态设置 UpdateData(FALSE); acedPostCommand(_T("\33")); } void CSectionDlg::OnBtnBlickB() { UpdateData(TRUE); m_nSectionMode = 2; //正交跑切 m_bStyeChange = true; CheckTypeButton(); //add by lgy 20120525 按钮状态设置 UpdateData(FALSE); acedPostCommand(_T("\33")); } void CSectionDlg::OnBtnBlickC() { UpdateData(TRUE); m_nSectionMode = 3; //非正交剖切 m_bStyeChange = true; CheckTypeButton(); //add by lgy 20120525 按钮状态设置 UpdateData(FALSE); acedPostCommand(_T("\33")); } void CSectionDlg::OnBtnBlickD() { UpdateData(TRUE); m_nSectionMode = 4; //断面剖切 m_bStyeChange = true; CheckTypeButton(); //add by lgy 20120525 按钮状态设置 UpdateData(FALSE); acedPostCommand(_T("\33")); } CString CSectionDlg::GetSectionNum() { UpdateData(TRUE); return m_strSectionNum; } CString CSectionDlg::GetNumStyle() { UpdateData(TRUE); return m_strStyle; } double CSectionDlg::GetNumHeight() { UpdateData(TRUE); return _tstof(m_strHeight); } CString CSectionDlg::GetDrawNum() { UpdateData(TRUE); return m_strDrawingNum; } int CSectionDlg::GetLocal() { UpdateData(TRUE); return m_iLocal; } int CSectionDlg::GetDirect() { UpdateData(TRUE); return m_iDirect; } int CSectionDlg::GetSectionMode() { UpdateData(TRUE); return m_nSectionMode; } CString CSectionDlg::GetDrawingStyle() { UpdateData(TRUE); return m_strTextStyle; } double CSectionDlg::GetDrawHeight() { UpdateData(TRUE); return _tstof(m_strDrawingHeight); } void CSectionDlg::OnBnClickDrawNum() { UpdateData(TRUE); if (!m_bCheck) //不显示剖切图号 { GetDlgItem(IDC_CMB_DRAWTEXTSTYLE)->EnableWindow(FALSE); GetDlgItem(IDC_EDT_DRAWINGNUM)->EnableWindow(FALSE); GetDlgItem(IDC_CMB_SECTIONPOSITION)->EnableWindow(FALSE); GetDlgItem(IDC_CMB_SECTIONDIRECT)->EnableWindow(FALSE); GetDlgItem(IDC_CMB_DRAWINGHEIGHT)->EnableWindow(FALSE); GetDlgItem(IDC_BTN_DRAWINGHEIGHT)->EnableWindow(FALSE); } else { GetDlgItem(IDC_CMB_DRAWTEXTSTYLE)->EnableWindow(TRUE); GetDlgItem(IDC_EDT_DRAWINGNUM)->EnableWindow(TRUE); GetDlgItem(IDC_CMB_SECTIONPOSITION)->EnableWindow(TRUE); GetDlgItem(IDC_CMB_SECTIONDIRECT)->EnableWindow(TRUE); GetDlgItem(IDC_CMB_DRAWINGHEIGHT)->EnableWindow(TRUE); GetDlgItem(IDC_BTN_DRAWINGHEIGHT)->EnableWindow(TRUE); } UpdateData(FALSE); } BOOL CSectionDlg::GetIsShowDrawText() { UpdateData(TRUE); return m_bCheck; } void CSectionDlg::OnBnClickedBtnWordhight() { UpdateData(TRUE); XPushAutoHide noAutoHide(this); double dHeight = _tstof(m_strHeight); dHeight = dHeight*DocGetPScale(); BeginEditorCommand(); if(GetDist(_T("\n字高"), dHeight, RSG_NOZERO|RSG_NONEG) == RTNORM) { dHeight /= DocGetPScale(); CString str; //str.Format(_T("%.1f"), dHeight/DocGetPScale()); str.Format(_T("%.1f"), dHeight); m_strHeight = str; } CompleteEditorCommand(); UpdateData(FALSE); } void CSectionDlg::OnBnClickedBtnDrawingheight() { UpdateData(TRUE); XPushAutoHide noAutoHide(this); double dHeight = _tstof(m_strDrawingHeight); dHeight = dHeight*DocGetPScale(); BeginEditorCommand(); if(GetDist(_T("\n字高"), dHeight, RSG_NOZERO|RSG_NONEG) == RTNORM) { dHeight /= DocGetPScale(); CString str; str.Format(_T("%.1f"), dHeight); m_strDrawingHeight = str; } CompleteEditorCommand(); UpdateData(FALSE); } BOOL CSectionDlg::GetIsChangeType() { return m_bStyeChange; } void CSectionDlg::SetIsChangeType(BOOL bIs) { m_bStyeChange = bIs; }