Files
envi-code/SourceCode/Code2026/tg_shs/shs_annotate/SectionDlg.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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;
}