// 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")); }