Files
envi-code/SourceCode/Code2026/tg_shs/shs_kerncmd/StepNew.cpp
T
2026-09-28 15:28:50 +08:00

560 lines
15 KiB
C++

// StepNew.cpp : implementation file
//
#include "stdafx.h"
#include "StepNew.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CStepNew dialog
int g_nType = 7;
double g_dTaijiezonggao = 450;
int g_nTabushu = 3;
double g_dTabugao = 150;
double g_dTabukuan = 300;
double g_dPlateWidth = 900;
CString g_sElevation = _T('0');
BOOL g_bQibianwutabu = FALSE;
BOOL g_bZhongbianwutabu = FALSE;
BOOL g_bPutongTaijie = TRUE;
BOOL g_bTaijiedingmian = TRUE;
BOOL CStepNew::m_bESC=TRUE;// [11/27/2007 nsh]
CStepNew::CStepNew(CWnd* pParent /*=NULL*/)
: CModelessDialog(CStepNew::IDD, pParent)
{
//{{AFX_DATA_INIT(CStepNew)
m_dTaijiezonggao = 0.0;
m_nTabushu = 0;
m_dTabugao = 0.0;
m_dTabukuan = 0.0;
m_dPlateWidth = 0.0;
m_dElevation = 0.0;
m_sElevation = _T("");
m_bQibianwutabu = FALSE;
m_bZhongbianwutabu = FALSE;
//}}AFX_DATA_INIT
m_nType = 7;
tbButtm[0].tbID = ID_RECT_DANMIAN;
tbButtm[0].BitmapID = 0;
tbButtm[0].Style = TBSTYLE_CHECKGROUP;
tbButtm[1].tbID = ID_RECT_SANMIAN;
tbButtm[1].BitmapID = 1;
tbButtm[1].Style = TBSTYLE_CHECKGROUP;
tbButtm[2].tbID = ID_RECT_YINJIAO;
tbButtm[2].BitmapID = 2;
tbButtm[2].Style = TBSTYLE_CHECKGROUP;
tbButtm[3].tbID = ID_YUANHU_TAIJIE;
tbButtm[3].BitmapID = 3;
tbButtm[3].Style = TBSTYLE_CHECKGROUP;
tbButtm[4].tbID = ID_YANQIANG_YIXINGTAIJIE;
tbButtm[4].BitmapID = 4;
tbButtm[4].Style = TBSTYLE_CHECKGROUP;
tbButtm[5].tbID = ID_PLATE_YIXINGTAIJIE;
tbButtm[5].BitmapID = 5;
tbButtm[5].Style = TBSTYLE_CHECKGROUP;
tbButtm[6].tbID = ID_ZIHUITAIJIE;
tbButtm[6].BitmapID = 6;
tbButtm[6].Style = TBSTYLE_CHECKGROUP;
tbButtm[7].tbID = 0;
tbButtm[7].BitmapID = 0;
tbButtm[7].Style = TBSTYLE_SEP;
tbButtm[8].tbID = ID_PUTONGTAIJIE;
tbButtm[8].BitmapID = 7;
tbButtm[8].Style = TBSTYLE_CHECKGROUP;
tbButtm[9].tbID = ID_XIACHENSHITAIJIE;
tbButtm[9].BitmapID = 8;
tbButtm[9].Style = TBSTYLE_CHECKGROUP;
tbButtm[10].tbID = 0;
tbButtm[10].BitmapID = 0;
tbButtm[10].Style = TBSTYLE_SEP;
tbButtm[11].tbID = ID_TAIJIE_DINGMIAN;
tbButtm[11].BitmapID = 9;
tbButtm[11].Style = TBSTYLE_CHECKGROUP;
tbButtm[12].tbID = ID_TAIJIE_DIMIAN;
tbButtm[12].BitmapID = 10;
tbButtm[12].Style = TBSTYLE_CHECKGROUP;
}
void CStepNew::DoDataExchange(CDataExchange* pDX)
{
CModelessDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CStepNew)
DDX_Control(pDX, IDC_SPIN_NUM, m_cSpinNum);
DDX_Text(pDX, IDC_OVERALL_HEIGHT, m_dTaijiezonggao);
DDX_Text(pDX, IDC_STEP_COUNT, m_nTabushu);
DDX_Text(pDX, IDC_STEP_HEIGHT, m_dTabugao);
DDX_Text(pDX, IDC_STEP_WIDTH, m_dTabukuan);
DDX_Text(pDX, IDC_PLATE_WIDTH, m_dPlateWidth);
DDX_Text(pDX, IDC_ELEVATION, m_sElevation);
DDX_Check(pDX, IDC_CHECK_QIWUTABU, m_bQibianwutabu);
DDX_Check(pDX, IDC_CHECK_ZHONGWUTABU, m_bZhongbianwutabu);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CStepNew, CModelessDialog)
//{{AFX_MSG_MAP(CStepNew)
ON_EN_KILLFOCUS(IDC_OVERALL_HEIGHT, OnKillfocusOverallHeight)
ON_EN_CHANGE(IDC_STEP_WIDTH, OnChangeStepWidth)
ON_EN_KILLFOCUS(IDC_STEP_HEIGHT, OnKillfocusStepHeight)
ON_EN_CHANGE(IDC_ELEVATION, OnChangeElevation)
ON_EN_CHANGE(IDC_PLATE_WIDTH, OnChangePlateWidth)
ON_BN_CLICKED(IDC_CHECK_QIWUTABU, OnCheckQiwutabu)
ON_BN_CLICKED(IDC_CHECK_ZHONGWUTABU, OnCheckZhongwutabu)
ON_EN_CHANGE(IDC_STEP_COUNT, OnChangeStepCount)
ON_WM_DESTROY()
ON_COMMAND(ID_RECT_DANMIAN, OnRectDanmian)
ON_COMMAND(ID_RECT_SANMIAN,OnRectSanmian)
ON_COMMAND(ID_RECT_YINJIAO, OnRectYijiao)
ON_COMMAND(ID_YUANHU_TAIJIE,OnYuanhuTaijie)
ON_COMMAND(ID_YANQIANG_YIXINGTAIJIE, OnYuanqiangYixingtaijie)
ON_COMMAND(ID_PLATE_YIXINGTAIJIE,OnPlateYixingtaijie)
ON_COMMAND(ID_ZIHUITAIJIE, OnZihuitaijie)
ON_COMMAND(ID_PUTONGTAIJIE, OnPutongtaijie)
ON_COMMAND(ID_XIACHENSHITAIJIE,OnXiachenshitaijie)
ON_COMMAND(ID_TAIJIE_DINGMIAN,OnTaijieDingmian)
ON_COMMAND(ID_TAIJIE_DIMIAN,OnTaijiedimian)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStepNew message handlers
void CStepNew::OnPutongtaijie()
{
m_bPutongTaijie = TRUE;
}
void CStepNew::OnXiachenshitaijie()
{
m_bPutongTaijie = FALSE;
}
void CStepNew::OnTaijieDingmian()
{
m_bTaijiedingmian = TRUE;
GetDlgItem(IDC_STEPWIDTH)->SetWindowText(_T("平台宽度:"));
}
void CStepNew::OnTaijiedimian()
{
m_bTaijiedingmian = FALSE;
GetDlgItem(IDC_STEPWIDTH)->SetWindowText(_T("台阶总宽:"));
}
//矩形单面台阶
void CStepNew::OnRectDanmian()
{
//add by lxb on 2011/12/02
GetDlgItem(IDC_CHECK_QIWUTABU)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_ZHONGWUTABU)->EnableWindow(FALSE);
if (m_toolbar.IsButtonChecked(ID_RECT_DANMIAN))
{
m_nType = 1;
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow();
}
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow();
m_bESC =FALSE;// [11/27/2007 nsh]
acedPostCommand(_T("\33"));
}
//矩形三面台阶
void CStepNew::OnRectSanmian()
{
//add by lxb on 2011/12/02
GetDlgItem(IDC_CHECK_QIWUTABU)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_ZHONGWUTABU)->EnableWindow(FALSE);
if (m_toolbar.IsButtonChecked(ID_RECT_SANMIAN))
{
m_nType = 2;
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow();
}
m_bESC =FALSE;// [11/27/2007 nsh]
acedPostCommand(_T("\33"));// [12/17/2007 nsh]
}
//矩形阴角台阶
void CStepNew::OnRectYijiao()
{
//add by lxb on 2011/12/02
GetDlgItem(IDC_CHECK_QIWUTABU)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_ZHONGWUTABU)->EnableWindow(FALSE);
if (m_toolbar.IsButtonChecked(ID_RECT_YINJIAO))
{
m_nType = 3;
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow();
}
m_bESC =FALSE;// [11/27/2007 nsh]
acedPostCommand(_T("\33"));
}
//圆弧台阶
void CStepNew::OnYuanhuTaijie()
{
//add by lxb on 2011/12/02
GetDlgItem(IDC_CHECK_QIWUTABU)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_ZHONGWUTABU)->EnableWindow(FALSE);
if (m_toolbar.IsButtonChecked(ID_YUANHU_TAIJIE))
{
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow();
m_nType = 4;
}
m_bESC =FALSE;// [11/27/2007 nsh]
acedPostCommand(_T("\33"));
}
//沿墙偏移绘制台阶
void CStepNew::OnYuanqiangYixingtaijie()
{
//add by lxb on 2011/12/02
GetDlgItem(IDC_CHECK_QIWUTABU)->EnableWindow(TRUE);
GetDlgItem(IDC_CHECK_ZHONGWUTABU)->EnableWindow(TRUE);
if (m_toolbar.IsButtonChecked(ID_YANQIANG_YIXINGTAIJIE))
{
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow();
m_nType = 5;
}
m_bESC =FALSE;// [11/27/2007 nsh]
acedPostCommand(_T("\33"));
}
//选择已有路劲绘制台阶
void CStepNew::OnPlateYixingtaijie()
{
//add by lxb on 2011/12/02
GetDlgItem(IDC_CHECK_QIWUTABU)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_ZHONGWUTABU)->EnableWindow(FALSE);
if (m_toolbar.IsButtonChecked(ID_PLATE_YIXINGTAIJIE))
{
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow(FALSE);
m_nType = 6;
}
m_bESC =FALSE;// [11/27/2007 nsh]
acedPostCommand(_T("\33"));
}
//任意绘制台阶
void CStepNew::OnZihuitaijie()
{
//add by lxb on 2011/12/02
GetDlgItem(IDC_CHECK_QIWUTABU)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_ZHONGWUTABU)->EnableWindow(FALSE);
if (m_toolbar.IsButtonChecked(ID_ZIHUITAIJIE))
{
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow(FALSE);
m_nType = 7;
}
m_bESC =FALSE;// [11/27/2007 nsh]
acedPostCommand(_T("\33"));
}
BOOL CStepNew::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);
// if there is a top level routing frame then let it handle the message
if (GetRoutingFrame() != NULL) return FALSE;
// to be thorough we will need to handle UNICODE versions of the message also !!
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
//TCHAR szFullText[512];
CString strTipText;
// Zyu modify on 100723,消除64位编译警告
//UINT nID = pNMHDR->idFrom;
UINT_PTR nID = pNMHDR->idFrom;
if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
{
// idFrom is actually the HWND of the tool
nID = ::GetDlgCtrlID((HWND)nID);
//Add by whl on 060308
if (nID!=IDC_LIST_DATA)
return FALSE;
}
if (nID != 0) // will be zero on a separator
{
{
CAcModuleResourceOverride vTmp;
// Zyu modify on 100723,消除64位编译警告
//strTipText.LoadString(nID); //=szFullText;
strTipText.LoadString((UINT)nID); //=szFullText;
}
#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;
// bring the tooltip window above other popup windows
::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|
SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); return TRUE;
}
return TRUE;
}
BOOL CStepNew::OnInitDialog()
{
CModelessDialog::OnInitDialog();
// TODO: Add extra initialization here
m_cSpinNum.SetBuddy(GetDlgItem(IDC_STEP_COUNT));
m_cSpinNum.SetRange(1,100);
{
CAcModuleResourceOverride vTmp;
m_toolbar.Create(WS_VISIBLE | WS_CHILD | CCS_BOTTOM | TBSTYLE_TOOLTIPS
| CCS_ADJUSTABLE ,CRect(0,0,0,0),this, IDR_STEP);
TBBUTTON *pIndex, *pRTF_Button = new TBBUTTON[13];
pIndex = pRTF_Button;
for(long lIndex = 0; lIndex < 13; lIndex++)
{
memset(pIndex ,NULL, sizeof(TBBUTTON));
pIndex->iBitmap= tbButtm[lIndex].BitmapID;
pIndex->idCommand = tbButtm[lIndex].tbID;
pIndex->fsStyle = tbButtm[lIndex].Style;
pIndex->fsState = TBSTATE_ENABLED;
pIndex++;
}
CSize size(16, 15);
m_toolbar.SetButtonSize(size);
m_toolbar.AddButtons(13, pRTF_Button);
if (pRTF_Button != NULL)
delete pRTF_Button;
m_toolbar.ModifyStyle(0,TBSTYLE_FLAT);
m_toolbar.SetBitmapSize(size);
m_toolbar.AddBitmap(11, IDR_STEP);
m_toolbar.AutoSize();
}
m_dTaijiezonggao = g_dTaijiezonggao;
m_nTabushu = g_nTabushu;
m_dTabugao = g_dTabugao;
m_dTabukuan = g_dTabukuan;
m_dPlateWidth = g_dPlateWidth;
m_sElevation = g_sElevation;
m_dElevation = _tstof(LPCTSTR(m_sElevation));
m_bQibianwutabu = g_bQibianwutabu;
m_bZhongbianwutabu = g_bZhongbianwutabu;
switch(g_nType)
{
case 1: m_toolbar.CheckButton(ID_RECT_DANMIAN,TRUE);
break;
case 2: m_toolbar.CheckButton(ID_RECT_SANMIAN,TRUE);
break;
case 3: m_toolbar.CheckButton(ID_RECT_YINJIAO,TRUE);
break;
case 4: m_toolbar.CheckButton(ID_YUANHU_TAIJIE,TRUE);
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow(TRUE);//add by whl
break;
case 5: m_toolbar.CheckButton(ID_YANQIANG_YIXINGTAIJIE,TRUE);
break;
case 6: m_toolbar.CheckButton(ID_PLATE_YIXINGTAIJIE,TRUE);
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow(FALSE);//add by whl
break;
case 7: m_toolbar.CheckButton(ID_ZIHUITAIJIE,TRUE);
GetDlgItem(IDC_PLATE_WIDTH)->EnableWindow(FALSE);//add by whl
break;
default: m_toolbar.CheckButton(ID_ZIHUITAIJIE,TRUE);
break;
}
UpdateData(FALSE);
m_bPutongTaijie = g_bPutongTaijie;
m_bTaijiedingmian = g_bTaijiedingmian;
if (m_bPutongTaijie)
m_toolbar.CheckButton(ID_PUTONGTAIJIE,TRUE);
else
m_toolbar.CheckButton(ID_XIACHENSHITAIJIE,TRUE);
if (m_bTaijiedingmian)
{
m_toolbar.CheckButton(ID_TAIJIE_DINGMIAN,TRUE);
GetDlgItem(IDC_STEPWIDTH)->SetWindowText(_T("平台宽度:"));//add by whl
}
else
{
m_toolbar.CheckButton(ID_TAIJIE_DIMIAN,TRUE);
GetDlgItem(IDC_STEPWIDTH)->SetWindowText(_T("台阶总宽:"));//add by whl
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CStepNew::EnableToolbarButtons(BOOL b)
{
int nType = GetDrawType();
if (nType != 1)
m_toolbar.EnableButton(ID_RECT_DANMIAN,b);
else
m_toolbar.EnableButton(ID_RECT_DANMIAN,TRUE);
if (nType != 2)
m_toolbar.EnableButton(ID_RECT_SANMIAN,b);
else
m_toolbar.EnableButton(ID_RECT_SANMIAN,TRUE);
if (nType != 3)
m_toolbar.EnableButton(ID_RECT_YINJIAO,b);
else
m_toolbar.EnableButton(ID_RECT_YINJIAO,TRUE);
if (nType != 4)
m_toolbar.EnableButton(ID_YUANHU_TAIJIE,b);
else
m_toolbar.EnableButton(ID_YUANHU_TAIJIE,TRUE);
if (nType != 5)
m_toolbar.EnableButton(ID_YANQIANG_YIXINGTAIJIE,b);
else
m_toolbar.EnableButton(ID_YANQIANG_YIXINGTAIJIE,TRUE);
if (nType != 6)
m_toolbar.EnableButton(ID_PLATE_YIXINGTAIJIE,b);
else
m_toolbar.EnableButton(ID_PLATE_YIXINGTAIJIE,TRUE);
if (nType != 7)
m_toolbar.EnableButton(ID_ZIHUITAIJIE,b);
else
m_toolbar.EnableButton(ID_ZIHUITAIJIE,TRUE);
}
int CStepNew::GetDrawType()
{
if (m_toolbar.IsButtonChecked(ID_RECT_DANMIAN))
m_nType = 1;
else if (m_toolbar.IsButtonChecked(ID_RECT_SANMIAN))
m_nType = 2;
else if (m_toolbar.IsButtonChecked(ID_RECT_YINJIAO))
m_nType = 3;
else if (m_toolbar.IsButtonChecked(ID_YUANHU_TAIJIE))
m_nType = 4;
else if (m_toolbar.IsButtonChecked(ID_YANQIANG_YIXINGTAIJIE))
m_nType = 5;
else if (m_toolbar.IsButtonChecked(ID_PLATE_YIXINGTAIJIE))
m_nType = 6;
else if (m_toolbar.IsButtonChecked(ID_ZIHUITAIJIE))
m_nType = 7;
return m_nType;
}
void CStepNew::OnKillfocusOverallHeight()
{
UpdateData();
double d = m_dTaijiezonggao/m_dTabugao;
m_nTabushu = (int)(d + 0.5);
if (m_nTabushu <= 0)
m_nTabushu = 1;
m_dTabugao = m_dTaijiezonggao / m_nTabushu;
UpdateData(FALSE);
}
void CStepNew::OnChangeStepWidth()
{
UpdateData();
}
void CStepNew::OnKillfocusStepHeight()
{
// TODO: Add your control notification handler code here
UpdateData();
double d = m_dTaijiezonggao/m_dTabugao;
m_nTabushu = (int)(d + 0.5);
if (m_nTabushu <= 0)
m_nTabushu = 1;
m_dTabugao = m_dTaijiezonggao / m_nTabushu;
UpdateData(FALSE);
}
void CStepNew::OnChangeElevation()
{
UpdateData();
m_dElevation = _tstof(LPCTSTR(m_sElevation));
}
void CStepNew::OnChangePlateWidth()
{
UpdateData();
}
void CStepNew::OnCheckQiwutabu()
{
m_bQibianwutabu = !m_bQibianwutabu;
}
void CStepNew::OnCheckZhongwutabu()
{
m_bZhongbianwutabu = !m_bZhongbianwutabu;
}
void CStepNew::OnChangeStepCount()
{
int n = m_nTabushu;
UpdateData();
if (m_nTabushu <= 0)
{
m_nTabushu = n;
return;
UpdateData(FALSE);
}
m_dTabugao = m_dTaijiezonggao / m_nTabushu;
UpdateData(FALSE);
}
void CStepNew::OnDestroy()
{
CModelessDialog::OnDestroy();
// TODO: Add your message handler code here
g_nType = GetDrawType();
g_dTaijiezonggao = m_dTaijiezonggao;
g_nTabushu = m_nTabushu;
g_dTabugao = m_dTabugao;
g_dTabukuan = m_dTabukuan;
g_dPlateWidth = m_dPlateWidth;
g_sElevation = m_sElevation;
g_bQibianwutabu = m_bQibianwutabu;
g_bZhongbianwutabu = m_bZhongbianwutabu;
g_bPutongTaijie = m_bPutongTaijie;
g_bTaijiedingmian = m_bTaijiedingmian;
}
void CStepNew::OnClose()
{
acedPostCommand(_T("\33"));
}