// LeaderTextDlg.cpp : implementation file // #include "stdafx.h" #include "LeaderTextDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CLeaderDlg dialog const int maxHisList = 10; extern double g_nHeight; static int g_nArrowStyle = 1; static TDbSymbMultiLeader::TArrowStyle g_ArrowStyle[] = {TDbSymbMultiLeader::kArrow, TDbSymbMultiLeader::kDote, TDbSymbMultiLeader::kCrossing, TDbSymbMultiLeader::kNone}; CString CLeaderDlg::g_csArrowSize=_T("3.0"); CString CLeaderDlg::m_strInputUp = _T(""); CString CLeaderDlg::m_strInputDown = _T(""); // add by cwk on 060706 extern CString g_sLeadFixAngle = _T("45"); extern BOOL g_bLeadFixAngle = FALSE; //add by lgy 20120206 固定转角不能记忆 CString CLeaderDlg::m_sFixAngle = _T("45"); BOOL CLeaderDlg::m_bFixAngle= FALSE; BOOL CLeaderDlg::m_bContinue = TRUE; // Add by lcf on 2005-06-29 BOOL CLeaderDlg::m_bAllPtsOnLine = FALSE; // sg add 090327 int CLeaderDlg::m_nTextAlign = 2; // sg add 090402 int CLeaderDlg::s_iLeaderStyle = 0; IMPLEMENT_DYNAMIC(CLeaderDlg, CBaseTextDlg) CLeaderDlg::CLeaderDlg(BOOL bEdit, CWnd* pParent /*=NULL*/) : CBaseTextDlg(CLeaderDlg::IDD, pParent), m_bEditObj(bEdit) { //注释 by lgy 20120206 固定转角不能记忆 // add by cwk on 060706 //m_sFixAngle = g_sLeadFixAngle; //m_bFixAngle = g_bLeadFixAngle; } CLeaderDlg::CLeaderDlg(BOOL bEdit, UINT resID,CWnd* pParent /*=NULL*/) : CBaseTextDlg(resID, pParent), m_bEditObj(bEdit) { //注释 by lgy 20120206 固定转角不能记忆 // add by cwk on 060706 //m_sFixAngle = g_sLeadFixAngle; //m_bFixAngle = g_bLeadFixAngle; } void CLeaderDlg::DoDataExchange(CDataExchange* pDX) { CBaseTextDlg::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLeaderDlg) // sg modify 090507,仿照图名标注,试着解决“对象编辑中,有时候文字显示有问题”的BUG if (pDX->m_bSaveAndValidate) { DDX_CBString(pDX, IDC_COMBO_INPUTTEXT, m_strInputUp); DDX_CBString(pDX, IDC_COMBO_INPUTTEXT1, m_strInputDown); } else { GetDlgItem(IDC_COMBO_INPUTTEXT)->SetWindowText(m_strInputUp); GetDlgItem(IDC_COMBO_INPUTTEXT1)->SetWindowText(m_strInputDown); } DDX_Control(pDX, IDC_COMBO_INPUTTEXT, m_comboInputText); DDX_Control(pDX, IDC_COMBO_INPUTTEXT1, m_comboInputText1); DDX_Text(pDX, IDC_EDIT1, m_sFixAngle); DDX_CBIndex(pDX, IDC_COMBO_STYLE, g_nArrowStyle); DDX_CBString(pDX, IDC_ARROW_SIZE, g_csArrowSize); if (pDX->m_bSaveAndValidate && _tstof(g_csArrowSize)<1.0E-3) pDX->Fail(); DDX_Check(pDX, IDC_CONTINUE, m_bContinue); DDX_Check(pDX, IDC_CHECK1, m_bFixAngle); DDX_Check(pDX, IDC_CHECK_ONLINE, m_bAllPtsOnLine); // sg add 090327 DDX_CBIndex(pDX, IDC_COMBO_TEXTALIGN, m_nTextAlign); // sg add 090402 DDX_Check(pDX,IDC_CHK_LERDER,s_iLeaderStyle); // add by lxb on 111229 //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CLeaderDlg, CBaseTextDlg) //{{AFX_MSG_MAP(CLeaderDlg) ON_BN_CLICKED(IDC_CHECK1, OnUnChangeAngle) ON_BN_CLICKED(IDC_CHECK_ONLINE,OnCHKOnline) ON_BN_CLICKED(IDC_CHK_LERDER,OnCHKLeader) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CLeaderDlg message handlers BOOL CLeaderDlg::OnInitDialog() { CBaseTextDlg::OnInitDialog(); LoadHisText(); UpdateData(FALSE); GetDlgItem(IDC_COMBO_INPUTTEXT)->SetFocus(); // add by cwk on 060705 if (!m_bEditObj) { GetDlgItem(IDC_EDIT1)->EnableWindow(m_bFixAngle); } else { GetDlgItem(IDC_CHECK1)->ShowWindow(SW_HIDE); GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE); } UpdateData(FALSE); return FALSE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } // Modify by lcf On 2005-07-05 CWnd* CLeaderDlg::GetCurWnd() { UpdateData(TRUE); CWnd *pWnd = this->GetFocus(); CWnd *pWnd2 = NULL; if (m_comboInputText.m_hWnd == pWnd->GetParent()->m_hWnd) { pWnd2 = GetDlgItem(IDC_COMBO_INPUTTEXT); // 把CWnd 回传给基类 m_strInputText = m_strInputUp; } else if(m_comboInputText1.m_hWnd == pWnd->GetParent()->m_hWnd) { pWnd2 = GetDlgItem(IDC_COMBO_INPUTTEXT1); // 把CWnd 回传给基类 m_strInputText = m_strInputDown; } else { int nSel = m_comboInputText.GetWindowTextLength(); m_comboInputText.SetEditSel(nSel, nSel); pWnd2 = GetDlgItem(IDC_COMBO_INPUTTEXT); } return(pWnd2); } void CLeaderDlg::UpdateInputText() { CWnd *pWnd = this->GetFocus(); if (m_comboInputText.m_hWnd == pWnd->GetParent()->m_hWnd) { m_strInputUp = m_strInputText; } if (m_comboInputText1.m_hWnd == pWnd->GetParent()->m_hWnd) { m_strInputDown = m_strInputText; } UpdateData(FALSE); } void CLeaderDlg::Dlg2Obj(TDbSymbMultiLeader *pText) { CBaseTextDlg::Dlg2Obj(pText); pText->SetText1(m_strInputUp); pText->SetText2(m_strInputDown); pText->SetArrow(g_ArrowStyle[g_nArrowStyle]); double nSize = _tstof(g_csArrowSize); if (nSize>1.0E-3) pText->SetArrowSize(nSize); // sg add 090402,增加文字相对于基线的对齐方式 TDbSymbMultiLeader::TSymbMLTextAlign nAlign = (TDbSymbMultiLeader::TSymbMLTextAlign)(m_nTextAlign + 1); pText->SetTextAlign(nAlign); //引线平行 add by lxb on 111229 pText->SetLeaderParalle(s_iLeaderStyle); } void CLeaderDlg::Obj2Dlg(TDbSymbMultiLeader *pText) { CBaseTextDlg::Obj2Dlg(pText); m_strInputUp = pText->GetText1(); m_strInputDown = pText->GetText2(); TDbSymbMultiLeader::TArrowStyle Style = pText->GetArrow(); for(int i = 0; i < 4; i++) { if(Style == g_ArrowStyle[i]) g_nArrowStyle = i; } g_csArrowSize.Format(_T("%.1f"), pText->GetArrowSize()); // sg add 090402,增加文字相对于基线的对齐方式 m_nTextAlign = (int)(pText->GetTextAlign() - 1); //是否为引线平行 add by lxb on 111229 s_iLeaderStyle = pText->IsLeaderParall(); if (s_iLeaderStyle) m_bAllPtsOnLine = FALSE; } void CLeaderDlg::OnOK() { AddToRecent(); CBaseTextDlg::OnOK(); } // Add by lcf on 20050708 void CLeaderDlg::AddToRecent() { { UpdateData(TRUE); int len = m_lstHistory.Length(); TCHAR strTmpPath[256] = _T(""); GetTempPath(255, strTmpPath); _tcscat(strTmpPath, _T("leader.his")); #if (ADS>15) std:: #endif ofstream out(strTmpPath); if (m_strInputUp != _T("")) { out << (const char *)_AS(m_strInputUp) <<"\n"; int index = m_lstHistory.Index(m_strInputUp); if (index >= 0) { m_lstHistory.Remove(index); len --; } if (len > maxHisList-1) len = maxHisList - 1; } for (int i=0; i < len; i++) out << _AS(m_lstHistory[i]) << "\n"; len = m_lstHistory1.Length(); TCHAR strTmpPath1[256] = _T(""); GetTempPath(255, strTmpPath1); _tcscat(strTmpPath1, _T("leader1.his")); #if (ADS>15) std:: #endif ofstream out1(strTmpPath1); if (m_strInputDown != _T("")) { out1 << (const char *)_AS(m_strInputDown) << "\n"; int index = m_lstHistory1.Index(m_strInputDown); if (index >= 0) { m_lstHistory1.Remove(index); len --; } if (len > maxHisList-1) len = maxHisList - 1; } for (i=0; i < len; i++) out1 << _AS(m_lstHistory1[i]) << "\n"; } m_lstHistory.Reset(); m_lstHistory1.Reset(); m_comboInputText.ResetContent(); m_comboInputText1.ResetContent(); LoadHisText(); } void CLeaderDlg::LoadHisText() { TCHAR strTmpPath[256] = _T(""); GetTempPath(255, strTmpPath); _tcscat(strTmpPath, _T("leader.his")); #if (ADS>15) std:: #endif ifstream in(strTmpPath); while(!(!in)) { char line[256]; in.getline(line, 255); if (!in) break; m_lstHistory.Append(tstrnew(TString(line))); } for (int m =0; m < m_lstHistory.Length(); m++) m_comboInputText.AddString(m_lstHistory[m]); TCHAR strTmpPath1[256] = _T(""); GetTempPath(255, strTmpPath1); _tcscat(strTmpPath1, _T("leader1.his")); #if (ADS>15) std:: #endif ifstream in1(strTmpPath1); while(!(!in1)) { char line[256]; in1.getline(line, 255); if(!in1) break; m_lstHistory1.Append(tstrnew(TString(line))); } for (m =0; m < m_lstHistory1.Length(); m++) m_comboInputText1.AddString(m_lstHistory1[m]); UpdateData(false); } // add by cwk on 060705 void CLeaderDlg::OnUnChangeAngle() { // TODO: Add your control notification handler code here if (!m_bEditObj) { if (m_bFixAngle) { m_bFixAngle = FALSE; GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE); } else { m_bFixAngle = TRUE; GetDlgItem(IDC_EDIT1)->EnableWindow(); } } } //add by lxb 111228 void CLeaderDlg::OnCHKOnline() { CButton *pBtn1 = ((CButton*)GetDlgItem(IDC_CHECK_ONLINE)); CButton *pBtn2 = ((CButton*)GetDlgItem(IDC_CHK_LERDER)); if (pBtn1->GetCheck() == BST_CHECKED) { pBtn2->SetCheck(BST_UNCHECKED); } UpdateData(); } //add by lxb 111228 void CLeaderDlg::OnCHKLeader() { CButton *pBtn1 = ((CButton*)GetDlgItem(IDC_CHECK_ONLINE)); CButton *pBtn2 = ((CButton*)GetDlgItem(IDC_CHK_LERDER)); if (pBtn2->GetCheck() == BST_CHECKED) { pBtn1->SetCheck(BST_UNCHECKED); } UpdateData(); } //add by lxb 111228 void CLeaderDlg::SetCheckBoxStatus(BOOL bEnableFlag) { if (!bEnableFlag) { if (s_iLeaderStyle == 1) { ((CButton*)GetDlgItem(IDC_CHECK_ONLINE))->EnableWindow(FALSE); ((CButton*)GetDlgItem(IDC_CHK_LERDER))->EnableWindow(FALSE); } else { ((CButton*)GetDlgItem(IDC_CHK_LERDER))->EnableWindow(FALSE); } } else { ((CButton*)GetDlgItem(IDC_CHECK_ONLINE))->EnableWindow(TRUE); ((CButton*)GetDlgItem(IDC_CHK_LERDER))->EnableWindow(TRUE); } } int CLeaderDlg::GetLeaderStyle() { return s_iLeaderStyle; } ///////////////////////////////////////////////////////// IMPLEMENT_DYNAMIC(CEditLeaderDlg, CLeaderDlg) CEditLeaderDlg::CEditLeaderDlg(CWnd *pParent) : CLeaderDlg(TRUE, CEditLeaderDlg::IDD, pParent) { } BEGIN_MESSAGE_MAP(CEditLeaderDlg, CLeaderDlg) ON_BN_CLICKED(IDC_ADDDIM, OnBnClickedAdddim) ON_BN_CLICKED(IDC_CHECK_ONLINE, OnBnClickedCheckOnline) ON_BN_CLICKED(IDC_CHK_LERDER, OnBnClickedChkEditleaer) END_MESSAGE_MAP() void CEditLeaderDlg::OnBnClickedAdddim() { EndDialog(1000); } //add by lxb 111228 void CEditLeaderDlg::OnBnClickedCheckOnline() { CButton *pBtn1 = ((CButton*)GetDlgItem(IDC_CHECK_ONLINE)); CButton *pBtn2 = ((CButton*)GetDlgItem(IDC_CHK_LERDER)); if (pBtn1->GetCheck() == BST_CHECKED) { pBtn2->SetCheck(BST_UNCHECKED); } UpdateData(); } //add by lxb 111228 void CEditLeaderDlg::OnBnClickedChkEditleaer() { CButton *pBtn1 = ((CButton*)GetDlgItem(IDC_CHECK_ONLINE)); CButton *pBtn2 = ((CButton*)GetDlgItem(IDC_CHK_LERDER)); if (pBtn2->GetCheck() == BST_CHECKED) { pBtn1->SetCheck(BST_UNCHECKED); } UpdateData(); }