#include "stdafx.h" #include "StdArx.h" #include "FloorMgrDlg.h" #include "KTCadUtility.h" #include "KTSetting.h" #include "AecDbEwEquipment.h" const LPCTSTR g_sBuiding = _T("构筑物"); #ifndef IMG_ROOT #define IMG_ROOT 7 #endif #define IMG_ITEM 1 #define IMG_ITEMSEL 2 #define IMG_SUBITEM 0 #define IMG_SUBITEMSEL 0 #ifndef WM_SHOWORHIDEFLOOR #define WM_SHOWORHIDEFLOOR (WM_USER + 0x1001) #endif //#define ID_REFRUSH 117 #define ID_MODIFY 118 IMPLEMENT_DYNAMIC(CFloorMgrDlg, CDialog) CFloorMgrDlg::CFloorMgrDlg(CWnd* pParent /*=NULL*/) : CDialog(CFloorMgrDlg::IDD, pParent) { //{{AFX_DATA_INIT(CFloorMgrDlg) //}}AFX_DATA_INIT } CFloorMgrDlg::~CFloorMgrDlg(void) { } void CFloorMgrDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFloorMgrDlg) DDX_Control(pDX, IDC_TREE1, m_wndFloorTree); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CFloorMgrDlg, CDialog) //{{AFX_MSG_MAP(CFloorMgrDlg) ON_MESSAGE( WM_ACAD_KEEPFOCUS, &CFloorMgrDlg::onAcadKeepFocus ) //}}AFX_MSG_MAP ON_NOTIFY(NM_CLICK, IDC_TREE1, &CFloorMgrDlg::OnNMClickTree1) ON_MESSAGE(WM_SHOWORHIDEFLOOR,&CFloorMgrDlg::OnShowOrHideFloor) ON_WM_SIZE() ON_NOTIFY(NM_RCLICK, IDC_TREE1, &CFloorMgrDlg::OnNMRClickTree1) ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, &CFloorMgrDlg::OnTvnSelchangedTree1) ON_NOTIFY(NM_DBLCLK, IDC_TREE1, &CFloorMgrDlg::OnNMDblclkTree1) END_MESSAGE_MAP() LONG_PTR CFloorMgrDlg::onAcadKeepFocus( UINT_PTR, LONG_PTR) { POINT pt; ::GetCursorPos(&pt); CRect rect; GetWindowRect(&rect); if(!(rect.PtInRect(pt))) { return FALSE; } return TRUE; } BOOL CFloorMgrDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; if (!bmp.LoadBitmap (IDB_BITMAPPRIV)) { AfxMessageBox(_T ("Can't load bitmap: %x\n"), IDB_BITMAPPRIV); ASSERT (FALSE); return FALSE; } BITMAP bmpObj; bmp.GetBitmap (&bmpObj); UINT nFlags = ILC_COLOR24 | ILC_MASK; m_Imagelist.Create (16, bmpObj.bmHeight, nFlags, 0, 0); m_Imagelist.Add (&bmp, RGB (255, 0, 0)); m_wndFloorTree.SetImageList(&m_Imagelist,TVSIL_NORMAL); //if (::IsWindow(m_wndFloorTree.m_hWnd)) { CRect rc; GetClientRect(&rc); rc.DeflateRect(7,7,7,7); m_wndFloorTree.MoveWindow(rc); } return TRUE; } void CFloorMgrDlg::InsertChildItem(HTREEITEM hRoot,LPCTSTR pszName,Adesk::IntDbId nId,AcDb::Visibility eShow) { typedef std::map::iterator It; typedef std::map::iterator IIt; CString sText,sClassName,sName; sName = pszName;//可以拆解分类名称 IIt iit = m_mapIdToEl.find(nId); if (iit != m_mapIdToEl.end()) { int nEl = iit->second;//实体的标高 int nPos = -1,nEl2 = -1.0; BOOL bFind = FALSE; HTREEITEM hRoot = m_wndFloorTree.GetRootItem(); if (hRoot != NULL) { HTREEITEM hChild = m_wndFloorTree.GetChildItem(hRoot); while(hChild != NULL) { sText = m_wndFloorTree.GetItemText(hChild); nPos = sText.ReverseFind(_T(':')); if (nPos != -1) { nEl2 = _ttoi(sText.Mid(nPos + 1)); if (nEl == nEl2)//find el 找到标高层 { //找分类 HTREEITEM hSubChild = m_wndFloorTree.GetChildItem(hChild); while(hSubChild != NULL) { sClassName = m_wndFloorTree.GetItemText(hSubChild); if (sClassName.CompareNoCase(sName) == 0) { bFind = TRUE; break; } hSubChild = m_wndFloorTree.GetNextSiblingItem(hSubChild); } if ( bFind ) { //建立下级构件 HTREEITEM hSubItem = m_wndFloorTree.InsertItem(pszName,IMG_SUBITEM,IMG_SUBITEM,hSubChild); m_wndFloorTree.SetItemData(hSubItem,nId); m_wndFloorTree.SetCheck(hSubItem,(eShow == AcDb::kVisible) ? TRUE : FALSE); } else { hSubChild = m_wndFloorTree.InsertItem(sName,IMG_SUBITEM,IMG_SUBITEM,hChild); if (hSubChild != NULL) { m_wndFloorTree.SetCheck(hSubChild,TRUE); //建立下级构件 HTREEITEM hSubItem = m_wndFloorTree.InsertItem(pszName,IMG_SUBITEM,IMG_SUBITEM,hSubChild); m_wndFloorTree.SetItemData(hSubItem,nId); m_wndFloorTree.SetCheck(hSubItem,(eShow == AcDb::kVisible) ? TRUE : FALSE); } } return; } } hChild = m_wndFloorTree.GetNextSiblingItem(hChild); } //层已经排序建立了 //第n层 底标高:3000 //没有找到,在某一层内 HTREEITEM hPos = NULL; hChild = m_wndFloorTree.GetChildItem(hRoot); while(hChild != NULL) { sText = m_wndFloorTree.GetItemText(hChild); nPos = sText.ReverseFind(_T(':')); if (nPos != -1) { nEl2 = _ttoi(sText.Mid(nPos + 1)); if (nEl > nEl2)//找到最后大的 { hPos = hChild; } } hChild = m_wndFloorTree.GetNextSiblingItem(hChild); } if (hPos != NULL) { //从找到的层中,找分类 HTREEITEM hSubChild = m_wndFloorTree.GetChildItem(hPos); while(hSubChild != NULL) { sClassName = m_wndFloorTree.GetItemText(hSubChild); if (sClassName.CompareNoCase(sName) == 0) { bFind = TRUE; break; } hSubChild = m_wndFloorTree.GetNextSiblingItem(hSubChild); } if ( bFind ) { //建立下级构件 HTREEITEM hSubItem = m_wndFloorTree.InsertItem(pszName,IMG_SUBITEM,IMG_SUBITEM,hSubChild); m_wndFloorTree.SetItemData(hSubItem,nId); m_wndFloorTree.SetCheck(hSubItem,(eShow == AcDb::kVisible) ? TRUE : FALSE); } else { hSubChild = m_wndFloorTree.InsertItem(sName,IMG_SUBITEM,IMG_SUBITEM,hPos); if (hSubChild != NULL) { m_wndFloorTree.SetCheck(hSubChild,TRUE); //建立下级构件 HTREEITEM hSubItem = m_wndFloorTree.InsertItem(pszName,IMG_SUBITEM,IMG_SUBITEM,hSubChild); m_wndFloorTree.SetItemData(hSubItem,nId); m_wndFloorTree.SetCheck(hSubItem,(eShow == AcDb::kVisible) ? TRUE : FALSE); } } } } } } void CFloorMgrDlg::ShowFloorElItems() { AcDbDatabase *pDb = acdbCurDwg(); if (pDb != NULL) { AcDbObjectId idLay; AcDbObjectId idAxis = KTSetting::InitLayer(_T("LAY_AXIS")); std::vector vtFloor; AcGePoint3d ptPos; AcGeVector3d vtDir; Acad::ErrorStatus es; AcDbBlockTable* pTable = NULL; if ( Acad::eOk == (es = pDb->getBlockTable(pTable,AcDb::kForRead) ) ) { AcDbBlockTableRecord* pRecord = NULL; if (Acad::eOk == (es = pTable->getAt(ACDB_MODEL_SPACE,pRecord,AcDb::kForRead))) { AcDbEntity* pEnt = NULL; AcDbBlockTableRecordIterator* pIt = NULL; pRecord->newIterator(pIt); if (pIt != NULL) { for (pIt->start();!pIt->done();pIt->step()) { if ( Acad::eOk == (es = pIt->getEntity(pEnt,AcDb::kForRead) ) ) { AecDbXWall* pWall = AecDbXWall::cast(pEnt); if (pWall != NULL) { WallData data; pWall->GetWallData(data); int nEl = (int)(data.dBomEl + 0.5); if ( std::find(vtFloor.begin(),vtFloor.end(),nEl) == vtFloor.end()) { vtFloor.push_back(nEl); } std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } AecDbBeam* pBeam = AecDbBeam::cast(pEnt); if (pBeam != NULL) { ColumnParam data; pBeam->GetBeamData(data); int nEl = (int)(data.m_dBomEl + 0.5); if ( std::find(vtFloor.begin(),vtFloor.end(),nEl) == vtFloor.end()) { vtFloor.push_back(nEl); } std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } AecDbXSlab* pSlab = AecDbXSlab::cast(pEnt); if (pSlab != NULL) { int nEl = (int)(pSlab->GetElBom() + 0.5); if ( std::find(vtFloor.begin(),vtFloor.end(),nEl) == vtFloor.end()) { vtFloor.push_back(nEl); } std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } AecDbColumn* pCol = AecDbColumn::cast(pEnt); if (pCol != NULL) { ColumnParam data; pCol->GetColumnData(data); int nEl = (int)(data.m_dBomEl + 0.5); if ( std::find(vtFloor.begin(),vtFloor.end(),nEl) == vtFloor.end()) { vtFloor.push_back(nEl); } std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } AecDbClimbStair* pCStair = AecDbClimbStair::cast(pEnt); if (pCStair != NULL) { ClimbStair data; pCStair->GetClimbStairData(data); int nEl = (int)(data.dBomEl + 0.5); if ( std::find(vtFloor.begin(),vtFloor.end(),nEl) == vtFloor.end()) { vtFloor.push_back(nEl); } std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } AecDbLineStair* pLStair = AecDbLineStair::cast(pEnt); if (pLStair != NULL) { LineStair data; pLStair->GetLineStairData(data); int nEl = (int)(data.dBomEl + 0.5); if ( std::find(vtFloor.begin(),vtFloor.end(),nEl) == vtFloor.end()) { vtFloor.push_back(nEl); } std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } AecDbX3dPartEntity* pPart = AecDbX3dPartEntity::cast(pEnt); if (pPart != NULL) { ptPos = pPart->GetOrgPoint(); int nEl = (int)(ptPos.z + 0.5); if ( std::find(vtFloor.begin(),vtFloor.end(),nEl) == vtFloor.end()) { vtFloor.push_back(nEl); } std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } AecDbEwPipe* pPipe = AecDbEwPipe::cast(pEnt); if (pPipe != NULL) { pPipe->getStartPoint(ptPos); int nEl = (int)(ptPos.z + 0.5); std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } AecDbEwFitting* pFit = AecDbEwFitting::cast(pEnt); if (pFit != NULL) { pFit->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_MID,ptPos); int nEl = (int)(ptPos.z + 0.5); std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } AecDbEwEquipment* pEqu = AecDbEwEquipment::cast(pEnt); if (pEqu != NULL) { pEqu->GetInsert(ptPos,vtDir); int nEl = (int)(ptPos.z + 0.5); std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } AcDbLine* pLn = AcDbLine::cast(pEnt); if (pLn != NULL) { idLay = pEnt->layerId(); if (idLay == idAxis) { pLn->getStartPoint(ptPos); int nEl = (int)(ptPos.z + 0.5); if ( std::find(vtFloor.begin(),vtFloor.end(),nEl) == vtFloor.end()) { vtFloor.push_back(nEl); } std::pair pa(pEnt->objectId().asOldId(),nEl); m_mapIdToEl.insert(pa); } } pEnt->close(); } } delete pIt; } pRecord->close(); } pTable->close(); } std::sort(vtFloor.begin(),vtFloor.end()); typedef std::map::iterator It; int nFloor = 0.0,nEl = 0; CString sText; for (int i = 0;i < vtFloor.size();i++) { nEl = vtFloor.at(i); It it = m_mapFloorToItem.find(nEl); if ( it == m_mapFloorToItem.end())//没有找到 { nFloor++; sText.Format(_T("第%d层 底标高:%d"),nFloor,vtFloor.at(i)); HTREEITEM hItem = m_wndFloorTree.InsertItem(sText,IMG_ITEM,IMG_ITEM,m_wndFloorTree.GetRootItem()); std::pair pa(nEl,hItem); m_mapFloorToItem.insert(pa); m_wndFloorTree.SetCheck(hItem,TRUE);//显示 } } } } void CFloorMgrDlg::RefrushFloorInfo() { AcAxDocLock lock; m_wndFloorTree.DeleteAllItems(); m_mapFloorToItem.clear(); m_mapIdToEl.clear(); HTREEITEM hRoot = m_wndFloorTree.InsertItem(g_sBuiding,IMG_ROOT,IMG_ROOT); m_wndFloorTree.SetItemData(hRoot,1); AcDbDatabase *pDb = acdbCurDwg(); if (pDb != NULL) { AcDbObjectId idLay; AcDbObjectId idAxis = KTSetting::InitLayer(_T("LAY_AXIS")); //提取所有的标高列表 ShowFloorElItems(); CString sText; int nFloor = -1; Acad::ErrorStatus es; AcDbBlockTable* pTable = NULL; if ( Acad::eOk == (es = pDb->getBlockTable(pTable,AcDb::kForRead) ) ) { AcDbBlockTableRecord* pRecord = NULL; if (Acad::eOk == (es = pTable->getAt(ACDB_MODEL_SPACE,pRecord,AcDb::kForRead))) { AcDbEntity* pEnt = NULL; AcDbBlockTableRecordIterator* pIt = NULL; pRecord->newIterator(pIt); if (pIt != NULL) { for (pIt->start();!pIt->done();pIt->step()) { if ( Acad::eOk == (es = pIt->getEntity(pEnt,AcDb::kForRead) ) ) { //墙,梁,板,柱子,池底,素砼 AecDbXWall* pWall = AecDbXWall::cast(pEnt); if (pWall != NULL) { InsertChildItem(hRoot,_T("墙体"),pEnt->objectId().asOldId(),pEnt->visibility()); } AecDbColumn* pCol = AecDbColumn::cast(pEnt); if (pCol != NULL) { InsertChildItem(hRoot,_T("柱子"),pEnt->objectId().asOldId(),pEnt->visibility()); } AecDbBeam* pBeam = AecDbBeam::cast(pEnt); if (pBeam != NULL) { InsertChildItem(hRoot,_T("梁"),pEnt->objectId().asOldId(),pEnt->visibility()); } AecDbXSlab* pSlab = AecDbXSlab::cast(pEnt); if (pSlab != NULL) { InsertChildItem(hRoot,_T("板"),pEnt->objectId().asOldId(),pEnt->visibility()); } AecDbClimbStair* pCStair = AecDbClimbStair::cast(pEnt); if (pCStair != NULL) { InsertChildItem(hRoot,_T("圆护梯"),pEnt->objectId().asOldId(),pEnt->visibility()); } AecDbLineStair* pLStair = AecDbLineStair::cast(pEnt); if (pLStair != NULL) { InsertChildItem(hRoot,_T("直梯"),pEnt->objectId().asOldId(),pEnt->visibility()); } AecDbGuardBar* pBar = AecDbGuardBar::cast(pEnt); if (pBar != NULL) { InsertChildItem(hRoot,_T("护栏"),pEnt->objectId().asOldId(),pEnt->visibility()); } AecDbX3dPartEntity* pPart = AecDbX3dPartEntity::cast(pEnt); if (pPart != NULL) { InsertChildItem(hRoot,_T("部件"),pEnt->objectId().asOldId(),pEnt->visibility()); } AecDbEwPipe* pPipe = AecDbEwPipe::cast(pEnt); if (pPipe != NULL) { InsertChildItem(hRoot,_T("管子"),pEnt->objectId().asOldId(),pEnt->visibility()); } AecDbEwFitting* pFit = AecDbEwFitting::cast(pEnt); if (pFit != NULL) { InsertChildItem(hRoot,_T("管件"),pEnt->objectId().asOldId(),pEnt->visibility()); } AecDbEwEquipment* pEqu = AecDbEwEquipment::cast(pEnt); if (pEqu != NULL) { InsertChildItem(hRoot,_T("设备"),pEnt->objectId().asOldId(),pEnt->visibility()); } AcDbLine* pLn = AcDbLine::cast(pEnt); if (pLn != NULL) { idLay = pEnt->layerId(); if (idLay == idAxis) { InsertChildItem(hRoot,_T("轴网"),pEnt->objectId().asOldId(),pEnt->visibility()); } } //其他各种沟渠待补充... pEnt->close(); } } delete pIt; } pRecord->close(); } pTable->close(); } } m_wndFloorTree.SelectItem(hRoot); m_wndFloorTree.Expand(hRoot,TVE_EXPAND); } void CFloorMgrDlg::ModifyItem(HTREEITEM hItem) { } void CFloorMgrDlg::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult) { CPoint point,ptcursor; ::GetCursorPos(&point); ptcursor = point; m_wndFloorTree.ScreenToClient(&point); UINT uFlags = 0; HTREEITEM hItem = m_wndFloorTree.HitTest(point, &uFlags), hP(NULL); if (hItem != NULL) { if (uFlags == TVHT_ONITEMSTATEICON) // check框 { DWORD_PTR nXData = m_wndFloorTree.GetItemData(hItem); //if (nXData == 0) { PostMessage(WM_SHOWORHIDEFLOOR,(WPARAM)hItem,0); } } } *pResult = 0; } LRESULT CFloorMgrDlg::OnShowOrHideFloor(WPARAM wp,LPARAM lp) { AcAxDocLock lock; HTREEITEM hItem = (HTREEITEM)wp; if (hItem != NULL) { DWORD_PTR dXData = m_wndFloorTree.GetItemData(hItem); AcDbObjectId id; #ifdef _WIN64 id.setFromOldId((Adesk::IntDbId)dXData); #else id.setFromOldId((long)dXData); #endif BOOL bCheck = FALSE; m_wndFloorTree.GetCheck(hItem); bCheck = m_wndFloorTree.GetCheck(hItem); if (dXData == 0) { //有可能点在类别上 ShowOrHideFloor(hItem,bCheck); } else { Acad::ErrorStatus es; AcDbEntity* pEnt = NULL; if ( Acad::eOk == (es = acdbOpenAcDbEntity(pEnt,id,AcDb::kForWrite))) { pEnt->setVisibility(bCheck ? AcDb::kVisible : AcDb::kInvisible); pEnt->close(); } } } acedPostCommand(_T("regen ")); return 0L; } void CFloorMgrDlg::ShowOrHideFloor(HTREEITEM hFloor,BOOL bShowOrHide) { AcDbObjectId id; AcDbEntity* pEnt = NULL; Acad::ErrorStatus es; HTREEITEM hChild = m_wndFloorTree.GetChildItem(hFloor); while(hChild != NULL) { m_wndFloorTree.SetCheck(hChild,bShowOrHide); DWORD_PTR dXData = m_wndFloorTree.GetItemData(hChild); #ifdef _WIN64 id.setFromOldId((Adesk::IntDbId)dXData); #else id.setFromOldId((long)dXData); #endif if (dXData == 0) { ShowOrHideFloor(hChild,bShowOrHide); } else { if ( Acad::eOk == (es = acdbOpenAcDbEntity(pEnt,id,AcDb::kForWrite))) { pEnt->setVisibility(bShowOrHide ? AcDb::kVisible : AcDb::kInvisible); pEnt->close(); } } hChild = m_wndFloorTree.GetNextSiblingItem(hChild); } } void CFloorMgrDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if (::IsWindow(m_wndFloorTree.m_hWnd)) { CRect rc; GetClientRect(&rc); rc.DeflateRect(7,7,7,7); m_wndFloorTree.MoveWindow(rc); } } void CFloorMgrDlg::OnNMRClickTree1(NMHDR *pNMHDR, LRESULT *pResult) { CPoint point,ptcursor; ::GetCursorPos(&point); ptcursor = point; m_wndFloorTree.ScreenToClient(&point); CMenu menu; UINT uFlags; HTREEITEM hItem = m_wndFloorTree.HitTest(point,&uFlags); if(hItem != NULL) { m_wndFloorTree.SelectItem(hItem); CAcModuleResourceOverride myResources; menu.CreatePopupMenu(); menu.AppendMenu(MF_BYCOMMAND | MF_STRING | MF_ENABLED,ID_REFRUSH, _T("刷新(&R)")); menu.AppendMenu(MF_BYCOMMAND | MF_STRING | MF_ENABLED,ID_MODIFY, _T("修改(&M)")); int nID = menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, ptcursor.x, ptcursor.y,&m_wndFloorTree); switch(nID) { case ID_REFRUSH: { RefrushFloorInfo(); break; } case ID_MODIFY: { ModifyItem(hItem); break; } default: break; } } else { menu.AppendMenu(MF_BYCOMMAND | MF_STRING | MF_ENABLED,ID_REFRUSH, _T("刷新(&R)")); int nID = menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, ptcursor.x, ptcursor.y,&m_wndFloorTree); switch(nID) { case ID_REFRUSH: { RefrushFloorInfo(); break; } default: break; } } *pResult = 0; } BOOL CFloorMgrDlg::OnCommand(WPARAM wParam, LPARAM lParam) { switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: case IDCLOSE: { ShowWindow(SW_HIDE); return TRUE; } default: break; } return CDialog::OnCommand(wParam, lParam); } void CFloorMgrDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; HighLightEntity(pNMTreeView->itemOld.hItem, FALSE); HighLightEntity(pNMTreeView->itemNew.hItem, TRUE); *pResult = 0; } void CFloorMgrDlg::HighLightEntity(HTREEITEM hItem, BOOL bHighLight/* = TRUE*/) { #ifndef _WIN64 DWORD dwData; #else DWORD_PTR dwData; #endif AcDbObjectId idObj; while (hItem != NULL && hItem != TVI_ROOT) { dwData = m_wndFloorTree.GetItemData(hItem); hItem = m_wndFloorTree.GetParentItem(hItem); #ifdef _WIN64 idObj.setFromOldId((Adesk::IntDbId)dwData); #else idObj.setFromOldId(dwData); #endif if (idObj.isNull() || !idObj.isValid()) continue; if (!CKTCadUtility::HighLightEntity(idObj, bHighLight,acDocManager->curDocument())) continue; break; } } void CFloorMgrDlg::OnNMDblclkTree1(NMHDR *pNMHDR, LRESULT *pResult) { *pResult = 0; }