// MultiStairDlg.cpp : implementation file // #include "stdafx.h" #include "MultiStairDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMultiStairDlg dialog CString CMultiStairDlg::m_strRailHeight = _T("900"); CString CMultiStairDlg::m_strRailWidth = _T("60"); CString CMultiStairDlg::m_strRailDistToSide = _T("0"); BOOL CMultiStairDlg::m_bAutoRail=FALSE; BOOL CMultiStairDlg::m_bLeftHand=FALSE; BOOL CMultiStairDlg::m_bRightHand=FALSE; int CMultiStairDlg::m_nBaseType=0; int CMultiStairDlg::m_nMakeMode = 0; int CMultiStairDlg::m_nStairFlag = 1; //add by whl on 03/08/15 int CMultiStairDlg::m_nStepNum1 = 20; CString CMultiStairDlg::m_strStepHeight1; CString CMultiStairDlg::m_strStairHeight1; BOOL CMultiStairDlg::m_bgroup6Status =FALSE; //新增成员初始化 CString CMultiStairDlg::m_strFirstStairRailDist=_T("60"); CString CMultiStairDlg::m_strEndStairRailDist=_T("60"); BOOL CMultiStairDlg::m_bUpDir=TRUE; CString CMultiStairDlg::m_strSectHeight=_T("500"); //------------------------------------------------- //BOOL CMultiStairDlg::s_bOpenGroup1=TRUE; //BOOL CMultiStairDlg::s_bOpenGroup2=FALSE; //BOOL CMultiStairDlg::s_bOpenGroup3=FALSE; //BOOL CMultiStairDlg::s_bOpenGroup4=TRUE; CMultiStairDlg::CMultiStairDlg(CWnd* pParent /*=NULL*/) : CLineStairDlg(CMultiStairDlg::IDD, pParent),m_group6(0)//, // m_groups(0),m_group1(WG_ST_HORZ),m_group2(WG_ST_HORZ),m_group3(WG_ST_HORZ),m_group4(WG_ST_HORZ) { //{{AFX_DATA_INIT(CMultiStairDlg) m_bLeftWall=FALSE; m_bRightWall=FALSE; //}}AFX_DATA_INIT //add by whl on 03/08/15 //Swap In Exchange(m_strStairHeight,m_strStairHeight1); Exchange(m_strStepHeight,m_strStepHeight1); Exchange(m_nStepNum,m_nStepNum1); m_strStairHeight=Dist2Str(DocGetLHeight()); m_strStepHeight.Format(_T("%.2f"),DocGetLHeight()/m_nStepNum);//modified on 03/07/15 by whl m_bNeed2D0=m_bNeed2D; m_bNeed3D0=m_bNeed3D; m_bNeed2D=m_bNeed3D=TRUE; } CMultiStairDlg::~CMultiStairDlg() { //多跑楼梯对这两个静态项不影响 m_bNeed2D=m_bNeed2D0; m_bNeed3D=m_bNeed3D0; //add by whl on 03/08/15 //Swap Out Exchange(m_strStairHeight,m_strStairHeight1); Exchange(m_strStepHeight,m_strStepHeight1); Exchange(m_nStepNum,m_nStepNum1); } void CMultiStairDlg::DoDataExchange(CDataExchange* pDX) { CLineStairDlg::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMultiStairDlg) DDX_Radio(pDX, IDC_DRAG_MAKE, m_nMakeMode); DDX_Check(pDX, IDC_LEFT_WALL, m_bLeftWall); DDX_Check(pDX, IDC_RIGHT_WALL, m_bRightWall); //}}AFX_DATA_MAP DDX_Text(pDX, IDC_RAIL_HEIGHT, m_strRailHeight); DDX_Text(pDX, IDC_RAIL_WIDTH, m_strRailWidth); DDX_Text(pDX, IDC_RAIL_DISTTOSIDE, m_strRailDistToSide); DDX_Check(pDX, IDC_AUTORAIL, m_bAutoRail); DDX_Check(pDX, IDC_HAS_LHAND, m_bLeftHand); DDX_Check(pDX, IDC_HAS_RHAND, m_bRightHand); DDX_Radio(pDX, IDC_LEFT_BASE, m_nBaseType); DDX_Radio(pDX, IDC_RADIO_FIRST, m_nStairFlag); DDX_Control(pDX,IDC_GROUP6,m_group6); DDX_Control(pDX,IDC_SPIN1,m_ctrlSectNum); DDX_GroupStatus(pDX,IDC_GROUP6,m_bgroup6Status); //新增内容的映射 // [7/23/2008 nsh] DDX_Check(pDX,IDC_CHECK_UPDIR,m_bUpDir);//标注上楼方向 DDX_Text(pDX,IDC_EDIT_FIRSTDIST,m_strFirstStairRailDist);//首段扶手伸出 DDX_Text(pDX,IDC_EDIT_ENDDIST,m_strEndStairRailDist);//尾端扶手伸出 DDX_Text(pDX,IDC_EDIT_SECTHEIGHT,m_strSectHeight);//剖切高度 DDX_Text(pDX,IDC_EDIT1,m_iSectNum);//剖切步数 //----------------------------------------- // [10/11/2007 nsh] //DDX_Control(pDX,IDC_GROUP1,m_group1); //DDX_Control(pDX,IDC_GROUP2,m_group2); //DDX_Control(pDX,IDC_GROUP3,m_group3); //DDX_Control(pDX,IDC_GROUP4,m_group4); //DDX_GroupStatus(pDX,IDC_GROUP1,s_bOpenGroup1); //DDX_GroupStatus(pDX,IDC_GROUP2,s_bOpenGroup2); //DDX_GroupStatus(pDX,IDC_GROUP3,s_bOpenGroup3); //DDX_GroupStatus(pDX,IDC_GROUP4,s_bOpenGroup4); } BEGIN_MESSAGE_MAP(CMultiStairDlg, CLineStairDlg) //{{AFX_MSG_MAP(CMultiStairDlg) // NOTE: the ClassWizard will add message map macros here ON_BN_CLICKED(IDC_STAIR_CHECK_HEIGHT,OnClickSW) //新增事件的操作 ON_BN_CLICKED(IDC_CHECK_UPDIR,OnClickUpDir) ON_EN_CHANGE(IDC_EDIT_FIRSTDIST,OnChangeFirstRailDist) ON_EN_CHANGE(IDC_EDIT_ENDDIST,OnChangeEndRailDist) ON_EN_CHANGE(IDC_EDIT_SECTHEIGHT,OnChangeSectHeight) ON_EN_CHANGE(IDC_EDIT1,OnChangeSectNum)//剖切步数 //坡道情况下的处理 ON_BN_CLICKED(IDC_AS_ASCENT,OnClickAsCent) ON_BN_CLICKED(IDC_HAS_RHAND,OnClickHasSlent) ON_BN_CLICKED(IDC_ON_GROUND,OnClickOnground) //add by xlc on 090220 ON_EN_KILLFOCUS(IDC_RAIL_DISTTOSIDE,OnRailDisttoSideKF) ON_EN_KILLFOCUS(IDC_RAIL_HEIGHT, OnRailHeightKF) ON_EN_KILLFOCUS(IDC_RAIL_WIDTH, OnRailWidthKF) ON_BN_CLICKED(IDC_HAS_LHAND,OnLeftHandClk) ON_BN_CLICKED(IDC_HAS_RHAND,OnRightHandClk) //}}AFX_MSG_MAP END_MESSAGE_MAP() BOOL CMultiStairDlg::OnInitDialog() { BOOL res=CLineStairDlg::OnInitDialog(); //m_groups.Append(&m_group1); //m_groups.Append(&m_group2); //m_groups.Append(&m_group3); //m_groups.Append(&m_group3); //m_groups.SetMaxExtent(250); //CRect rect; //GetWindowRect(&rect); //SetWindowPos(NULL,rect.left,rect.top,rect.Width(),rect.Height()-140,0); //AddTip(IDC_STAIR_LENGTH_STATIC2,_T("梯段总长不包括休息平台长度,其始终等于所有踏步的宽度总和,其变化将使踏步宽度同比例变化")); AddTip(IDC_DRAG_MAKE,_T("通过鼠标拖动、点击方式来动态控制楼梯平面路径的输入")); AddTip(IDC_MATCH_PATH,_T("通过选择已有的楼梯平面路径来自动生成楼梯模型,路径的节点数需为偶数")); //-------------------------- if (m_bAsAscent) { this->GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE); this->GetDlgItem(IDC_STATIC_SECTNUM)->ShowWindow(SW_HIDE); this->GetDlgItem(IDC_SPIN1)->ShowWindow(SW_HIDE); this->GetDlgItem(IDC_EDIT_SECTHEIGHT)->ShowWindow(SW_SHOW); this->GetDlgItem(IDC_STATIC_SECTHEIGHT)->ShowWindow(SW_SHOW); this->GetDlgItem(IDC_HAS_SLANT)->EnableWindow(TRUE); this->GetDlgItem(IDC_ON_GROUND)->EnableWindow(TRUE); } else { this->GetDlgItem(IDC_EDIT1)->ShowWindow(SW_SHOW); this->GetDlgItem(IDC_STATIC_SECTNUM)->ShowWindow(SW_SHOW); this->GetDlgItem(IDC_SPIN1)->ShowWindow(SW_SHOW); this->GetDlgItem(IDC_EDIT_SECTHEIGHT)->ShowWindow(SW_HIDE); this->GetDlgItem(IDC_STATIC_SECTHEIGHT)->ShowWindow(SW_HIDE); this->GetDlgItem(IDC_HAS_SLANT)->EnableWindow(FALSE); this->GetDlgItem(IDC_ON_GROUND)->EnableWindow(FALSE); } m_ctrlSectNum.SetRange(1,m_nStepNum); //----------------------------- if (!(m_bLeftHand||m_bRightHand)) { GetDlgItem(IDC_AUTORAIL)->EnableWindow(FALSE); } return res; } AcDbEntity*CMultiStairDlg::NewObject() { TDbEntity*pObj=new TDbMultiStair; return pObj; } void CMultiStairDlg::Dlg2Obj(AcDbEntity*pObj) { TDbMultiStair *pStep=TDbMultiStair::cast(pObj); ASSERT(pStep); pStep->SetAscent(m_bAsAscent); if (m_bAsAscent)//modified by whl on 03/08/15 { pStep->SetSlant(m_bHasSlant); pStep->SetOnGround(m_bOnGround); } pStep->SetElevation(_tstof(m_strElev)); pStep->SetStairHeight(_tstof(m_strStairHeight)); pStep->SetStairWidth(_tstof(m_strStairWidth)); pStep->SetStepWidth(_tstof(m_strStepWidth)); pStep->SetStepHeight(_tstof(m_strStepHeight)); pStep->SetRailHeight(_tstof(m_strRailHeight)); pStep->SetRailWidth(_tstof(m_strRailWidth)); pStep->SetRailDistToSide(_tstof(m_strRailDistToSide)); pStep->SetAutoRail(m_bAutoRail); pStep->SetPathSide(m_nBaseType); pStep->SetHandRail(OFFSET_LEFT, m_bLeftHand); pStep->SetHandRail(OFFSET_RIGHT, m_bRightHand); pStep->SetSideBeam(OFFSET_LEFT, m_bNeedLeft); pStep->SetSideBeam(OFFSET_RIGHT, m_bNeedRight); pStep->SetStairFlag(m_nStairFlag); pStep->SetAlongWall(0, m_bLeftWall); pStep->SetAlongWall(1, m_bRightWall); //新增 pStep->SetRailDist(::_tstof(m_strFirstStairRailDist)); pStep->SetRailDistEnd(::_tstof(m_strEndStairRailDist)); if (m_bAsAscent) pStep->SetSectElev(::_tstof(m_strSectHeight)); else pStep->SetSectStepNum(m_iSectNum); pStep->SetArrow(m_bUpDir); } void CMultiStairDlg::Obj2Dlg(AcDbEntity *pObj)//modified by whl on 03/08/15 { TDbMultiStair *pStep=TDbMultiStair::cast(pObj); ASSERT(pStep); m_bAsAscent=pStep->IsAscent(); if (m_bAsAscent) { m_bHasSlant=pStep->HasSlant(); m_bOnGround=pStep->IsOnGround(); } m_strElev=Dist2Str(pStep->GetElevation()); m_strStairHeight=Dist2Str(pStep->GetStairHeight()); m_strStairWidth=Dist2Str(pStep->GetStairWidth()); m_strRailHeight=Dist2Str(pStep->GetRailHeight()); m_strRailWidth=Dist2Str(pStep->GetRailWidth()); m_strStepWidth=Dist2Str(pStep->GetStepWidth()); m_strStepHeight=Dist2Str(pStep->GetStepHeight()); m_strRailDistToSide=Dist2Str(pStep->GetRailDistToSide()); m_bAutoRail=pStep->IsAutoRail(); m_nBaseType=pStep->GetPathSide(); m_bLeftHand=pStep->HasHandRail(OFFSET_LEFT); m_bRightHand=pStep->HasHandRail(OFFSET_RIGHT); m_bNeedLeft=pStep->HasSideBeam(OFFSET_LEFT); m_bNeedRight=pStep->HasSideBeam(OFFSET_RIGHT); m_nStairFlag=pStep->GetStairFlag(); m_nStepNum=pStep->GetTotalStepNum(); m_bLeftWall=pStep->IsAlongWall(0); m_bRightWall=pStep->IsAlongWall(1); //新增 m_strFirstStairRailDist=Dist2Str(pStep->GetRailDist()); m_strEndStairRailDist=Dist2Str(pStep->GetRailDistEnd()); m_strSectHeight=Dist2Str(pStep->GetSectElev()); m_bUpDir=pStep->IsArrow(); if (m_bAsAscent) m_strSectHeight=Dist2Str(pStep->GetSectElev()); else m_iSectNum=(int)pStep->GetSectStepNum(); //double mm=pStep->GetSectStepNum(); } bool CMultiStairDlg::UpdateEdit(UINT ctrlID,bool bReportError) { if (!bValidWnd) return false; CEdit *pEdit=(CEdit*)GetDlgItem(ctrlID); if (pEdit==NULL) return false; static bool bUpdating=false; if (bUpdating) return false; bUpdating=true; bool result=true; CDataExchange dxOut(this,false); if (ctrlID==IDC_STAIR_LENGTH||ctrlID==IDC_STEP_WIDTH||ctrlID==IDC_STAIR_WIDTH) { CString temp; pEdit->GetWindowText(temp); if (ctrlID==IDC_STAIR_LENGTH) { } else if (ctrlID==IDC_STEP_WIDTH){ if (_tstof(temp)>0) { m_strStepWidth=temp; //m_strStairLength=Dist2Str(_tstof(temp)*(m_bAsAscent? m_nStepNum : m_nStepNum-1)); //DDX_Text(&dxOut,IDC_STAIR_LENGTH,m_strStairLength); //UpdateImage(); } else if (bReportError) { AfxMessageBox(_T("踏步宽度太小!")); DDX_Text(&dxOut,IDC_STEP_WIDTH,m_strStepWidth); pEdit->SetFocus(); pEdit->SetSel(0,-1); } } else { if (_tstof(temp)>0) { m_strStairWidth=temp; UpdateImage();//更新 } else if (bReportError) { AfxMessageBox(_T("梯段宽度太小!")); pEdit->SetFocus(); DDX_Text(&dxOut,IDC_STAIR_WIDTH,m_strStairWidth);//还原 pEdit->SetSel(0,-1); } } } //新增 else if (ctrlID==IDC_CHECK_UPDIR) { CDataExchange dxIn(this,TRUE); DDX_Check(&dxIn,IDC_CHECK_UPDIR,m_bUpDir); DDX_Check(&dxOut,IDC_CHECK_UPDIR,m_bUpDir); UpdateImage(); } else if (ctrlID==IDC_EDIT_FIRSTDIST) { CString temp; pEdit->GetWindowText(temp); m_strFirstStairRailDist=temp; DDX_Text(&dxOut,IDC_EDIT_FIRSTDIST,m_strFirstStairRailDist); UpdateImage(); } else if (ctrlID==IDC_EDIT_ENDDIST) { CString temp; pEdit->GetWindowText(temp); m_strEndStairRailDist=temp; DDX_Text(&dxOut,IDC_EDIT_ENDDIST,m_strEndStairRailDist); UpdateImage(); } else if (ctrlID==IDC_EDIT_SECTHEIGHT) { CString temp; pEdit->GetWindowText(temp); if (_tstof(temp)>0&&_tstof(temp)<_tstof(m_strStairHeight)) { m_strSectHeight=temp; DDX_Text(&dxOut,IDC_EDIT_SECTHEIGHT,m_strSectHeight); UpdateImage(); } else if (bReportError) { AfxMessageBox(_T("剖切高度不合适!")); pEdit->SetFocus(); DDX_Text(&dxOut,IDC_EDIT_SECTHEIGHT,m_strSectHeight);//还原 } } else if (ctrlID==IDC_EDIT1) { CString temp; pEdit->GetWindowText(temp); if (_tstof(temp)*_tstof(m_strStepHeight)>0&&_tstof(temp)*_tstof(m_strStepHeight)<_tstof(m_strStairHeight)) { m_iSectNum=::_ttoi(temp); DDX_Text(&dxOut,IDC_EDIT1,m_iSectNum); } else if (bReportError) { AfxMessageBox(_T("剖切步数不合适!")); pEdit->SetFocus(); DDX_Text(&dxOut,IDC_EDIT1,m_iSectNum);//还原 } } //modify by xlc on 090220 else if (ctrlID==IDC_RAIL_DISTTOSIDE) {//扶手距边的处理过程 CString temp; pEdit->GetWindowText(temp); if (_tstof(temp)>=0&&_tstof(temp)<_tstof(m_strStairWidth)*0.5) { m_strRailDistToSide=temp; UpdateImage(); } else if (bReportError) { AfxMessageBox(_T("输入的扶手距边不正确!")); DDX_Text(&dxOut,IDC_RAIL_DISTTOSIDE,m_strRailDistToSide); pEdit->SetFocus(); } } else if (ctrlID==IDC_RAIL_HEIGHT)//扶手高度 { CString temp; pEdit->GetWindowText(temp); double x=::_tstof(temp); if (temp=="" || _tstof(temp)<=_DIST_SNAP) { this->MessageBox(_T("输入的扶手高度不正确!"),_T("AutoCAD"),MB_OK); DDX_Text(&dxOut,IDC_RAIL_HEIGHT,m_strRailHeight); } else { m_strRailHeight = temp; UpdateImage(); } } else if (ctrlID==IDC_RAIL_WIDTH)//扶手宽度 { CString temp; pEdit->GetWindowText(temp); double x=::_tstof(temp); if (temp=="" || x<=0) { this->MessageBox(_T("输入的扶手宽度不正确!"),_T("AutoCAD"),MB_OK); DDX_Text(&dxOut,IDC_RAIL_WIDTH,m_strRailWidth); } else { m_strRailWidth =temp; } } //else if (ctrlID==IDC_AS_ASCENT || ctrlID==IDC_HAS_RHAND || ctrlID==IDC_ON_GROUND) //{//坡道各项处理 //} //----------------------------------------------- else if (CBaseStairDlg::UpdateEdit(ctrlID,bReportError)&& (ctrlID==IDC_STEP_NUM||ctrlID==IDC_STEP_HEIGHT)){ } else result=false; bUpdating=false; return result; } void CMultiStairDlg::OnOK() { //--------------------------- // nsh 修改于20070903 // -------------------------- //CToolTipDialog::OnOK(); CModelessDialog::OnOK(); } void CMultiStairDlg::OnClickSW() { this->ShowWindow(SW_HIDE); this->GetDist(); this->ShowWindow(SW_SHOW); } void CMultiStairDlg::GetDist() {//得到楼梯长度的函数 ads_real xDist; static CString temp; temp=m_strStairWidth; BeginEditorCommand(); int i=ads_getdist(NULL,_T("请输入楼梯的宽度:"),&xDist); CompleteEditorCommand(); if (i==RTNORM) { if (xDist>0) { this->UpdateData(); m_strStairWidth.Format(_T("%f"),xDist); this->UpdateData(FALSE); } } else { if (i==RTNONE) { m_strStairWidth =temp; this->UpdateData(FALSE); return; } } } //新增操作 void CMultiStairDlg::OnClickUpDir() {//标注上楼方向 UpdateEdit(IDC_CHECK_UPDIR,false); return; } void CMultiStairDlg::OnChangeFirstRailDist() {//首层扶手伸出 UpdateEdit(IDC_EDIT_FIRSTDIST,false); return; } void CMultiStairDlg::OnChangeEndRailDist() {//尾层扶手伸出 UpdateEdit(IDC_EDIT_ENDDIST,false); return; } void CMultiStairDlg::OnChangeSectHeight() {//剖切高度 UpdateEdit(IDC_EDIT_SECTHEIGHT,true); return; } void CMultiStairDlg::OnChangeSectNum() { UpdateEdit(IDC_EDIT1,true); } //add by xlc on 090220 void CMultiStairDlg::OnRailDisttoSideKF() { UpdateEdit(IDC_RAIL_DISTTOSIDE,true); } void CMultiStairDlg::OnRailHeightKF() { UpdateEdit(IDC_RAIL_HEIGHT,true); } void CMultiStairDlg::OnRailWidthKF() { UpdateEdit(IDC_RAIL_WIDTH,true); } //以下为坡道的情况下的处理 void CMultiStairDlg::OnClickAsCent() { CDataExchange dxIn(this,true); DDX_Check(&dxIn,IDC_AS_ASCENT,m_bAsAscent); //-------------------------- if (m_bAsAscent) { this->GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE); this->GetDlgItem(IDC_STATIC_SECTNUM)->ShowWindow(SW_HIDE); this->GetDlgItem(IDC_SPIN1)->ShowWindow(SW_HIDE); this->GetDlgItem(IDC_EDIT_SECTHEIGHT)->ShowWindow(SW_SHOW); this->GetDlgItem(IDC_STATIC_SECTHEIGHT)->ShowWindow(SW_SHOW); this->GetDlgItem(IDC_HAS_SLANT)->EnableWindow(TRUE); this->GetDlgItem(IDC_ON_GROUND)->EnableWindow(TRUE); } else { this->GetDlgItem(IDC_EDIT1)->ShowWindow(SW_SHOW); this->GetDlgItem(IDC_STATIC_SECTNUM)->ShowWindow(SW_SHOW); this->GetDlgItem(IDC_SPIN1)->ShowWindow(SW_SHOW); this->GetDlgItem(IDC_EDIT_SECTHEIGHT)->ShowWindow(SW_HIDE); this->GetDlgItem(IDC_STATIC_SECTHEIGHT)->ShowWindow(SW_HIDE); this->GetDlgItem(IDC_HAS_SLANT)->EnableWindow(FALSE); this->GetDlgItem(IDC_ON_GROUND)->EnableWindow(FALSE); } //以下是在切换的时候转化剖切高度和剖切步数的计算 CDataExchange dxOut(this,false); if (m_bAsAscent) { m_strSectHeight=Dist2Str((m_iSectNum-0.5)*::_tstof(m_strStepHeight)); DDX_Text(&dxOut,IDC_EDIT_SECTHEIGHT,m_strSectHeight); } else { m_iSectNum=(int)(::_tstof(m_strSectHeight)/::_tstof(m_strStepHeight)+0.5); DDX_Text(&dxOut,IDC_EDIT1,m_iSectNum); } UpdateImage(); //----------------------------- } void CMultiStairDlg::OnClickHasSlent() { CDataExchange dxIn(this,true); DDX_Check(&dxIn,IDC_HAS_RHAND,m_bRightHand); UpdateImage(); } void CMultiStairDlg::OnClickOnground() { CDataExchange dxIn(this,true); //modify by xlc on 090220 //DDX_Text(&dxIn,IDC_ON_GROUND,m_bOnGround); DDX_Check(&dxIn,IDC_ON_GROUND,m_bOnGround); UpdateImage(); } //---------------------------------- void CMultiStairDlg::OnLeftHandClk() { UpdateData(); if (m_bLeftHand||m_bRightHand) { GetDlgItem(IDC_AUTORAIL)->EnableWindow(TRUE); } else { GetDlgItem(IDC_AUTORAIL)->EnableWindow(FALSE); } } void CMultiStairDlg::OnRightHandClk() { UpdateData(); if (m_bLeftHand||m_bRightHand) { GetDlgItem(IDC_AUTORAIL)->EnableWindow(TRUE); } else { GetDlgItem(IDC_AUTORAIL)->EnableWindow(FALSE); } }