387 lines
9.5 KiB
C++
387 lines
9.5 KiB
C++
#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;
|
|
}
|