// LayerManBar.cpp: implementation of the CLayerManBar class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" //#include //#include //#include #include #include "tapi.h" #include "LayerManBar.h" #include "Resource.h" extern XStringList g_lstCloseLay; #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif #define IDI_LAYERBAR 1115 #define IDC_LAYERBAR_LIST 1116 #define IDC_LAYERBAR_OPEN 1117 #define IDC_LAYERBAR_CLOSE 1118 #define IDC_LAYERBAR_DEL 1119 #define IDC_LAYERBAR_OPENALL 1120 #define IDC_LAYERBAR_LUCKTEL 1121 #define IDC_LAYERBAR_ILL 1122 #define IDC_LAYERBAR_POW 1123 #define IDC_LAYERBAR_FIR 1124 #define IDC_LAYERBAR_WEA 1125 #define IDC_LAYERBAR_LUCKTCH 1126 #define IDC_LAYERBAR_TEL 1127 #define IDC_LAYERBAR_TCHLAY 1128 #define IDC_LAYERBAR_TELLAY 1129 #define IDC_LAYERBAR_DEFINE 1130 #define IDC_LAYERBAR_OPEN2 1131 #define IDC_LAYERBAR_LOCK 1132 #define IDC_LAYERBAR_LOCK2 1133 #define IDC_LAYERBAR_UNLOCK 1134 CLayerManBar* g_pLayerBar = NULL; extern TARCH_IMPEXP int g_nProductId; void LayerTools() { CAcModuleResourceOverride exm; CMDIFrameWnd *pAcadFrame = acedGetAcadFrame(); if(g_pLayerBar){ if(::IsWindow(g_pLayerBar->m_hWnd)) { if(!g_pLayerBar->IsWindowVisible()) { acedGetAcadFrame()->ShowControlBar(g_pLayerBar, TRUE, TRUE); CWnd *pView=acedGetAcadDwgView(); if(pView) pView->SetFocus(); } else { acedGetAcadFrame()->ShowControlBar(g_pLayerBar, FALSE, TRUE); acedGetAcadFrame()->RecalcLayout(); } return; } delete g_pLayerBar; g_pLayerBar=NULL; } g_pLayerBar = new CLayerManBar; CRect rect(0, 0, 81, 100); int nDockSide=AFX_IDW_DOCKBAR_LEFT; int nBarStyle=WS_CHILD|WS_VISIBLE| CBRS_FLYBY; g_pLayerBar->Create(pAcadFrame, _T("上华图层管理"), IDI_LAYERBAR, nBarStyle , rect); g_pLayerBar->Initial(); g_pLayerBar->RestoreControlBar(); g_pLayerBar->EnableDocking(CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT); pAcadFrame->DockControlBar(g_pLayerBar, nDockSide); pAcadFrame->ShowControlBar(g_pLayerBar, TRUE, TRUE); pAcadFrame->RecalcLayout(); } void DestroyLayerManBar() { if(g_pLayerBar){ if(::IsWindow(g_pLayerBar->m_hWnd)) g_pLayerBar->DestroyWindow(); delete g_pLayerBar; g_pLayerBar=NULL; } } ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// IMPLEMENT_DYNAMIC(CLayerManBar, CAcUiDockControlBar) CLayerManBar::CLayerManBar() { m_sizeDlg.cx = 91; m_sizeDlg.cy = 100; m_bIsTchOn = TRUE; m_bIsTelOn = TRUE; m_bIsTchLucked = FALSE; m_bIsTelLucked = FALSE; } CLayerManBar::~CLayerManBar() { } BEGIN_MESSAGE_MAP(CLayerManBar, CAcUiDockControlBar) //{{AFX_MSG_MAP(CAcUiDockControlBar) ON_WM_WINDOWPOSCHANGED() ON_BN_CLICKED(IDC_LAYERBAR_TCHLAY, OnButTchLay) ON_BN_CLICKED(IDC_LAYERBAR_TELLAY, OnButTelLay) ON_BN_CLICKED(IDC_LAYERBAR_DEFINE, OnButDefine) ON_BN_CLICKED(IDC_LAYERBAR_OPEN, OnButOpen) // ON_BN_CLICKED(IDC_LAYERBAR_TEL, OnButTel) ON_BN_CLICKED(IDC_LAYERBAR_LUCKTEL, OnButLuckTel) ON_BN_CLICKED(IDC_LAYERBAR_OPENALL, OnButOpenAll) ON_BN_CLICKED(IDC_LAYERBAR_CLOSE, OnButClose) ON_BN_CLICKED(IDC_LAYERBAR_LUCKTCH, OnButLuckTch) ON_BN_CLICKED(IDC_LAYERBAR_DEL, OnButDel) ON_BN_CLICKED(IDC_LAYERBAR_OPEN2, OnButOpen2) ON_BN_CLICKED(IDC_LAYERBAR_UNLOCK, OnButUnLock) ON_BN_CLICKED(IDC_LAYERBAR_LOCK, OnButLock) ON_BN_CLICKED(IDC_LAYERBAR_LOCK2, OnButLock2) //}}AFX_MSG_MAP END_MESSAGE_MAP() void CLayerManBar::Initial() { CAcModuleResourceOverride vTemp; m_butTgLay.Create(_T("显示建筑层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,20,90,40), this, IDC_LAYERBAR_TCHLAY); CString csShowTel = _T("显示电气层"); if(g_nProductId==16) csShowTel = _T("显示电气层"); else if(g_nProductId==14) csShowTel = _T("显示给排水"); m_butTelLay.Create(csShowTel, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,40,90,60), this, IDC_LAYERBAR_TELLAY); m_butDefine.Create(_T("定义图层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,60,90,80), this, IDC_LAYERBAR_DEFINE); m_butLuckTch.Create(_T("锁定建筑层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,80,90,100), this, IDC_LAYERBAR_LUCKTCH); if(g_nProductId==16) csShowTel = _T("锁定电气层"); else if(g_nProductId==14) csShowTel = _T("锁定给排水"); m_butLuckTel.Create(csShowTel, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,100,90,120), this, IDC_LAYERBAR_LUCKTEL); m_butOpen.Create(_T("只开选择层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,140,90,160), this, IDC_LAYERBAR_OPEN); m_butClose.Create(_T("关闭选择层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,160,90,180), this, IDC_LAYERBAR_CLOSE); m_butDel.Create(_T("删除选择层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,180,90,200), this, IDC_LAYERBAR_DEL); m_butOpen2.Create(_T("打开关闭层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,200,90,220), this, IDC_LAYERBAR_OPEN2); m_butLock.Create(_T("锁定选择层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,220,90,240), this, IDC_LAYERBAR_LOCK); m_butLock2.Create(_T("锁非选择层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,240,90,260), this, IDC_LAYERBAR_LOCK2); m_butUnLock.Create(_T("解锁图层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,260,90,280), this, IDC_LAYERBAR_UNLOCK); m_butOpenAll.Create(_T("打开全部层"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(0,280,90,300), this, IDC_LAYERBAR_OPENALL); HBITMAP hBitmap31 = (HBITMAP)::LoadImage(g_hTchDll, _T("TWT_16_KXZC"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butOpen.SetIcon(hBitmap31, NULL, 16, 15); HBITMAP hBitmap32 = (HBITMAP)::LoadImage(g_hTchDll, _T("TWT_16_GXZC"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butClose.SetIcon(hBitmap32, NULL, 16, 15); HBITMAP hBitmap33 = (HBITMAP)::LoadImage(g_hTchDll, _T("TWT_16_SCXC"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butDel.SetIcon(hBitmap33, NULL, 16, 15); HBITMAP hBitmap34 = (HBITMAP)::LoadImage(g_hTchDll, _T("TWT_16_DKTC"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butOpen2.SetIcon(hBitmap34, NULL, 16, 15); HBITMAP hBitmap35 = (HBITMAP)::LoadImage(g_hTchDll, _T("TWT_16_SXZC"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butLock.SetIcon(hBitmap35, NULL, 16, 15); HBITMAP hBitmap36 = (HBITMAP)::LoadImage(g_hTchDll, _T("TWT_16_SFXC"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butLock2.SetIcon(hBitmap36, NULL, 16, 15); HBITMAP hBitmap37 = (HBITMAP)::LoadImage(g_hTchDll, _T("TWT_16_JXZC"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butUnLock.SetIcon(hBitmap37, NULL, 16, 15); HBITMAP hBitmap1 = (HBITMAP)::LoadImage(g_hTchDll, _T("ID_LIGHT_ON"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butTgLay.SetIcon(hBitmap1, NULL, 16, 15); HBITMAP hBitmap2 = (HBITMAP)::LoadImage(g_hTchDll, _T("ID_LIGHT_ON"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butTelLay.SetIcon(hBitmap2, NULL, 16, 15); HBITMAP hBitmap3 = (HBITMAP)::LoadImage(g_hTchDll, _T("ICON_16_PICKENT"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butDefine.SetIcon(hBitmap3, NULL, 16, 15); HBITMAP hBitmap4 = (HBITMAP)::LoadImage(g_hTchDll, _T("TWT_16_JXZC"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butLuckTel.SetIcon(hBitmap4, NULL, 16, 15); HBITMAP hBitmap5 = (HBITMAP)::LoadImage(g_hTchDll, _T("TWT_16_JXZC"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butLuckTch.SetIcon(hBitmap5, NULL, 16, 15); HBITMAP hBitmap6 = (HBITMAP)::LoadImage(g_hTchDll, _T("ID_LIGHT_ALLON"), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butOpenAll.SetIcon(hBitmap6, NULL, 16, 15); } // 调整窗口大小 void CLayerManBar::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) { CAcUiDockControlBar::OnWindowPosChanged(lpwndpos); if((lpwndpos->flags & SWP_HIDEWINDOW) || (lpwndpos->flags & SWP_SHOWWINDOW)) return; CSize sizeOld = m_sizeDlg; m_sizeDlg.cx = lpwndpos->cx; m_sizeDlg.cy = lpwndpos->cy; long nIncY = m_sizeDlg.cy - sizeOld.cy; long nIncX = m_sizeDlg.cx - sizeOld.cx; } //定义图层 void CLayerManBar::OnButDefine() { acDocManager->sendStringToExecute(curDoc(), _T("defineLayer "), true, false, false); } //建筑图层(显示) void CLayerManBar::OnButTchLay() { CAcModuleResourceOverride vTemp; m_bIsTchOn = !m_bIsTchOn; CString csTmp = _T("ID_LIGHT_ON"); if(!m_bIsTchOn) csTmp = _T("ID_LIGHT_OFF"); HBITMAP hBitmap=(HBITMAP)::LoadImage(g_hTchDll, csTmp, IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butTgLay.SetIcon(hBitmap, NULL, 16, 15); XStringList lst; lst.Append(tstrnew(LAY_AXIS)); lst.Append(tstrnew(LAY_BALCONY)); lst.Append(tstrnew(LAY_BORDER)); lst.Append(tstrnew(LAY_COLU)); lst.Append(tstrnew(LAY_WIN)); lst.Append(tstrnew(LAY_DIMAX)); lst.Append(tstrnew(LAY_GROUND)); lst.Append(tstrnew(LAY_WALL)); lst.Append(tstrnew(LAY_WALL_DIVIDER)); lst.Append(tstrnew(LAY_WALL_FILL)); lst.Append(tstrnew(LAY_WALL_BRICK)); lst.Append(tstrnew(LAY_WALL_ROCKET)); lst.Append(tstrnew(LAY_WALL_CONCRETE)); lst.Append(tstrnew(LAY_WALL_PARAPET)); lst.Append(tstrnew(LAY_COLU_BRICK)); lst.Append(tstrnew(LAY_COLU_ROCKET)); lst.Append(tstrnew(LAY_COLU_CONCRETE)); lst.Append(tstrnew(LAY_COLU_STEEL)); lst.Append(tstrnew(LAY_SURFACE)); lst.Append(tstrnew(LAY_ROOF)); lst.Append(tstrnew(LAY_STAIR)); lst.Append(tstrnew(LAY_SANIWARE)); lst.Append(tstrnew(LAY_RAIL)); lst.Append(tstrnew(LAY_HANDRAIL)); lst.Append(tstrnew(LAY_SPACE)); lst.Append(tstrnew(LAY_VIEW)); lst.Append(tstrnew(LAY_AXIS_TEXT)); lst.Append(tstrnew(_T("PUB_DIM"))); //建筑的文字和标注 lst.Append(tstrnew(_T("PUB_TEXT"))); lst.Append(tstrnew(LAY_VIEWPORT)); lst.Append(tstrnew(LAY_HATCH)); lst.Append(tstrnew(LAY_BORDER)); lst.Append(tstrnew(LAY_OPENING_DIM)); lst.Append(tstrnew(LAY_S_LINE)); lst.Append(tstrnew(LAY_S_WIN)); lst.Append(tstrnew(LAY_S_BLOCK)); lst.Append(tstrnew(LAY_S_STAIR)); lst.Append(tstrnew(LAY_E_FLOOR)); lst.Append(tstrnew(LAY_E_LINE)); lst.Append(tstrnew(LAY_E_WIN)); lst.Append(tstrnew(LAY_E_COMP)); lst.Append(tstrnew(LAY_E_STAIR)); lst.Append(tstrnew(_T("TCH_保留"))); lst.Append(tstrnew(_T("PUB_WALL"))); XString xsDbfFile; if(!FindFile(_T("userlayer.dbf"), xsDbfFile)) { MessageBox(_T("对不起,没有发现userlayer.dbf文件!")); return; } CodeBase db; XDbfTable *pTable = db.Open(xsDbfFile); if(!pTable) { CString csTmp; csTmp.Format(_T("%s文件只读或损坏!"), xsDbfFile); AfxMessageBox(csTmp); // AfxMessageBox(_T("TK文件只读或损坏!")); return; } for(pTable->MoveFirst();!pTable->IsEOF();pTable->MoveNext()){ int id(0); CString sName, sComment; GET_FIELD(pTable, _T("product"), id); GET_FIELD(pTable, _T("name"), sName); if(id == 1){ lst.Append(tstrnew(sName)); } } ShowLayer(lst, m_bIsTchOn); } //电气层(显示) void CLayerManBar::OnButTelLay() { CAcModuleResourceOverride vTemp; m_bIsTelOn = !m_bIsTelOn; CString csTmp = _T("ID_LIGHT_ON"); if(!m_bIsTelOn) csTmp = _T("ID_LIGHT_OFF"); HBITMAP hBitmap0 = (HBITMAP)::LoadImage(g_hTchDll, csTmp, IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butTelLay.SetIcon(hBitmap0, NULL, 16, 15); XStringList lst; if(g_nProductId==16){ lst.Append(tstrnew(LAY_EQUIP_ILLUME)); lst.Append(tstrnew(LAY_EQUIP_POWER)); lst.Append(tstrnew(LAY_EQUIP_FIRE)); lst.Append(tstrnew(LAY_EQUIP_WEAK)); lst.Append(tstrnew(LAY_EQUIP_CUPBOARD)); lst.Append(tstrnew(LAY_TEL_ELEMENT)); lst.Append(tstrnew(LAY_TEL_DOT)); lst.Append(tstrnew(LAY_TEL_LWIRE)); lst.Append(tstrnew(LAY_TEL_SHTLN)); lst.Append(tstrnew(LAY_WIRE_ILLUME)); lst.Append(tstrnew(LAY_WIRE_POWER)); lst.Append(tstrnew(LAY_WIRE_FIRE)); lst.Append(tstrnew(LAY_WIRE_WEAK)); lst.Append(tstrnew(LAY_WIRE_SYSTEM)); lst.Append(tstrnew(LAY_WIRE_BUS)); lst.Append(tstrnew(LAY_WIRE_GROUND)); lst.Append(tstrnew(LAY_WIRE_THUNDER)); lst.Append(tstrnew(LAY_DIM_ILLUME)); lst.Append(tstrnew(LAY_DIM_POWER)); lst.Append(tstrnew(LAY_DIM_FIRE)); lst.Append(tstrnew(LAY_DIM_WEAK)); lst.Append(tstrnew(LAY_DIM_SYSTEM)); lst.Append(tstrnew(LAY_DIM_CUPBOARD)); lst.Append(tstrnew(LAY_TEL_THUNDER)); lst.Append(tstrnew(LAY_TEL_DIM_TEXT)); lst.Append(tstrnew(LAY_DIM)); lst.Append(tstrnew(LAY_TEXT)); lst.Append(tstrnew(LAY_BORDER)); lst.Append(tstrnew(LAY_TEL_GRID)); lst.Append(tstrnew(LAY_TEL_SOCK)); lst.Append(tstrnew(LAY_TEL_SOCK_DOTE)); lst.Append(tstrnew(LAY_TEL_TERM)); lst.Append(tstrnew(LAY_WIRE_EMERG)); lst.Append(tstrnew(LAY_WIRE_USER1)); lst.Append(tstrnew(LAY_WIRE_USER2)); } else if(g_nProductId==14){ lst.Append(tstrnew(LAY_PIPE_FEED)); lst.Append(tstrnew(LAY_PIPE_FEED2)); lst.Append(tstrnew(LAY_PIPE_FEED3)); lst.Append(tstrnew(LAY_PIPE_HEADFEED)); lst.Append(tstrnew(LAY_PIPE_HEADFEED2)); lst.Append(tstrnew(LAY_PIPE_HEADFEED3)); lst.Append(tstrnew(LAY_PIPE_HEADBACK)); lst.Append(tstrnew(LAY_PIPE_HEADBACK2)); lst.Append(tstrnew(LAY_PIPE_HEADBACK3)); lst.Append(tstrnew(LAY_PIPE_DIRT)); lst.Append(tstrnew(LAY_PIPE_USELESS)); lst.Append(tstrnew(LAY_PIPE_RAIN)); lst.Append(tstrnew(LAY_PIPE_USED)); lst.Append(tstrnew(LAY_PIPE_USED2)); lst.Append(tstrnew(LAY_PIPE_USED3)); lst.Append(tstrnew(LAY_PIPE_FIRE)); lst.Append(tstrnew(LAY_PIPE_FIRE2)); lst.Append(tstrnew(LAY_PIPE_FIRE3)); lst.Append(tstrnew(LAY_PIPE_SPRINKLE)); lst.Append(tstrnew(LAY_PIPE_SPRINKLE2)); lst.Append(tstrnew(LAY_PIPE_SPRINKLE3)); lst.Append(tstrnew(LAY_PIPE_COAGULATE)); lst.Append(tstrnew(LAY_PIPE_DRINK)); lst.Append(tstrnew(LAY_PIPE_PRESSDIRT)); lst.Append(tstrnew(LAY_PIPE_PRESSUSELESS)); lst.Append(tstrnew(LAY_PIPE_PRESSRAIN)); lst.Append(tstrnew(LAY_PIPE_OTHER)); lst.Append(tstrnew(LAY_PIPE_DOUBLE)); lst.Append(tstrnew(LAY_PIPE_DIM)); lst.Append(tstrnew(LAY_PIPE_USER1)); lst.Append(tstrnew(LAY_PIPE_USER2)); lst.Append(tstrnew(LAY_PIPE_USER3)); // cet 2012.4.12 add user3-user8 lst.Append(tstrnew(LAY_PIPE_USER4)); lst.Append(tstrnew(LAY_PIPE_USER5)); lst.Append(tstrnew(LAY_PIPE_USER6)); lst.Append(tstrnew(LAY_PIPE_USER7)); lst.Append(tstrnew(LAY_PIPE_USER8)); lst.Append(tstrnew(LAY_VPIPE_USER1)); lst.Append(tstrnew(LAY_VPIPE_USER2)); lst.Append(tstrnew(LAY_VPIPE_USER3)); // cet 2012.4.12 add user3-user8 lst.Append(tstrnew(LAY_VPIPE_USER4)); lst.Append(tstrnew(LAY_VPIPE_USER5)); lst.Append(tstrnew(LAY_VPIPE_USER6)); lst.Append(tstrnew(LAY_VPIPE_USER7)); lst.Append(tstrnew(LAY_VPIPE_USER8)); lst.Append(tstrnew(LAY_VPIPE_FEED)); lst.Append(tstrnew(LAY_VPIPE_FEED2)); lst.Append(tstrnew(LAY_VPIPE_FEED3)); lst.Append(tstrnew(LAY_VPIPE_HEADFEED)); lst.Append(tstrnew(LAY_VPIPE_HEADFEED2)); lst.Append(tstrnew(LAY_VPIPE_HEADFEED3)); lst.Append(tstrnew(LAY_VPIPE_HEADBACK)); lst.Append(tstrnew(LAY_VPIPE_HEADBACK2)); lst.Append(tstrnew(LAY_VPIPE_HEADBACK3)); lst.Append(tstrnew(LAY_VPIPE_DIRT)); lst.Append(tstrnew(LAY_VPIPE_USELESS)); lst.Append(tstrnew(LAY_VPIPE_RAIN)); lst.Append(tstrnew(LAY_VPIPE_USED)); lst.Append(tstrnew(LAY_VPIPE_USED2)); lst.Append(tstrnew(LAY_VPIPE_USED3)); lst.Append(tstrnew(LAY_VPIPE_FIRE)); lst.Append(tstrnew(LAY_VPIPE_FIRE2)); lst.Append(tstrnew(LAY_VPIPE_FIRE3)); lst.Append(tstrnew(LAY_VPIPE_SPRINKLE)); lst.Append(tstrnew(LAY_VPIPE_SPRINKLE2)); lst.Append(tstrnew(LAY_VPIPE_SPRINKLE3)); lst.Append(tstrnew(LAY_VPIPE_COAGULATE)); lst.Append(tstrnew(LAY_VPIPE_DRINK)); lst.Append(tstrnew(LAY_VPIPE_PRESSDIRT)); lst.Append(tstrnew(LAY_VPIPE_PRESSUSELESS)); lst.Append(tstrnew(LAY_VPIPE_PRESSRAIN)); lst.Append(tstrnew(LAY_VPIPE_OTHER)); lst.Append(tstrnew(LAY_VALVE_FEED)); lst.Append(tstrnew(LAY_VALVE_HEADFEED)); lst.Append(tstrnew(LAY_VALVE_HEADBACK)); lst.Append(tstrnew(LAY_VALVE_DIRT)); lst.Append(tstrnew(LAY_VALVE_USELESS)); lst.Append(tstrnew(LAY_VALVE_RAIN)); lst.Append(tstrnew(LAY_VALVE_USED)); lst.Append(tstrnew(LAY_VALVE_FIRE)); lst.Append(tstrnew(LAY_VALVE_SPRINKLE)); lst.Append(tstrnew(LAY_VALVE_COAGULATE)); lst.Append(tstrnew(LAY_VALVE_DRINK)); lst.Append(tstrnew(LAY_VALVE_PRESSDIRT)); lst.Append(tstrnew(LAY_VALVE_PRESSUSELESS)); lst.Append(tstrnew(LAY_VALVE_PRESSRAIN)); lst.Append(tstrnew(LAY_VALVE_OTHER)); lst.Append(tstrnew(LAY_VALVE_USER1)); lst.Append(tstrnew(LAY_VALVE_USER2)); lst.Append(tstrnew(LAY_VALVE_USER3)); // cet 2012.4.12 add user3-user8 lst.Append(tstrnew(LAY_VALVE_USER4)); lst.Append(tstrnew(LAY_VALVE_USER5)); lst.Append(tstrnew(LAY_VALVE_USER6)); lst.Append(tstrnew(LAY_VALVE_USER7)); lst.Append(tstrnew(LAY_VALVE_USER8)); lst.Append(tstrnew(LAY_DIM_FEED)); lst.Append(tstrnew(LAY_DIM_HEADFEED)); lst.Append(tstrnew(LAY_DIM_HEADBACK)); lst.Append(tstrnew(LAY_DIM_DIRT)); lst.Append(tstrnew(LAY_DIM_USELESS)); lst.Append(tstrnew(LAY_DIM_RAIN)); lst.Append(tstrnew(LAY_DIM_USED)); lst.Append(tstrnew(LAY_DIM_HYDRANT)); lst.Append(tstrnew(LAY_DIM_SPRINKLE)); lst.Append(tstrnew(LAY_DIM_COAGULATE)); lst.Append(tstrnew(LAY_DIM_DRINK)); lst.Append(tstrnew(LAY_DIM_PRESSDIRT)); lst.Append(tstrnew(LAY_DIM_PRESSUSELESS)); lst.Append(tstrnew(LAY_DIM_PRESSRAIN)); lst.Append(tstrnew(LAY_DIM_OTHER)); lst.Append(tstrnew(LAY_DIM_USER1)); lst.Append(tstrnew(LAY_DIM_USER2)); lst.Append(tstrnew(LAY_DIM_USER3)); // cet 2012.4.12 add user3-user8 lst.Append(tstrnew(LAY_DIM_USER4)); lst.Append(tstrnew(LAY_DIM_USER5)); lst.Append(tstrnew(LAY_DIM_USER6)); lst.Append(tstrnew(LAY_DIM_USER7)); lst.Append(tstrnew(LAY_DIM_USER8)); lst.Append(tstrnew(LAY_TEXT_FEED)); lst.Append(tstrnew(LAY_TEXT_HEADFEED)); lst.Append(tstrnew(LAY_TEXT_HEADBACK)); lst.Append(tstrnew(LAY_TEXT_DIRT)); lst.Append(tstrnew(LAY_TEXT_USELESS)); lst.Append(tstrnew(LAY_TEXT_RAIN)); lst.Append(tstrnew(LAY_TEXT_USED)); lst.Append(tstrnew(LAY_TEXT_FIRE)); lst.Append(tstrnew(LAY_TEXT_SPRINKLE)); lst.Append(tstrnew(LAY_TEXT_COAGULATE)); lst.Append(tstrnew(LAY_TEXT_DRINK)); lst.Append(tstrnew(LAY_TEXT_PRESSDIRT)); lst.Append(tstrnew(LAY_TEXT_PRESSUSELESS)); lst.Append(tstrnew(LAY_TEXT_PRESSRAIN)); lst.Append(tstrnew(LAY_TEXT_OTHER)); lst.Append(tstrnew(LAY_TEXT_USER1)); lst.Append(tstrnew(LAY_TEXT_USER2)); lst.Append(tstrnew(LAY_TEXT_USER3)); // cet 2012.4.12 add lst.Append(tstrnew(LAY_TEXT_USER4)); lst.Append(tstrnew(LAY_TEXT_USER5)); lst.Append(tstrnew(LAY_TEXT_USER6)); lst.Append(tstrnew(LAY_TEXT_USER7)); lst.Append(tstrnew(LAY_TEXT_USER8)); lst.Append(tstrnew(LAY_EQ_FEED)); lst.Append(tstrnew(LAY_EQ_HEADFEED)); lst.Append(tstrnew(LAY_EQ_HEADBACK)); lst.Append(tstrnew(LAY_EQ_DIRT)); lst.Append(tstrnew(LAY_EQ_USELESS)); lst.Append(tstrnew(LAY_EQ_RAIN)); lst.Append(tstrnew(LAY_EQ_USED)); lst.Append(tstrnew(LAY_EQ_FIRE)); lst.Append(tstrnew(LAY_EQ_SPRINKLE)); lst.Append(tstrnew(LAY_EQ_COAGULATE)); lst.Append(tstrnew(LAY_EQ_DRINK)); lst.Append(tstrnew(LAY_EQ_PRESSDIRT)); lst.Append(tstrnew(LAY_EQ_PRESSUSELESS)); lst.Append(tstrnew(LAY_EQ_PRESSRAIN)); lst.Append(tstrnew(LAY_EQ_OTHER)); lst.Append(tstrnew(LAY_EQ_USER1)); lst.Append(tstrnew(LAY_EQ_USER2)); lst.Append(tstrnew(LAY_EQ_USER3)); // cet 2012.4.12 add lst.Append(tstrnew(LAY_EQ_USER4)); lst.Append(tstrnew(LAY_EQ_USER5)); lst.Append(tstrnew(LAY_EQ_USER6)); lst.Append(tstrnew(LAY_EQ_USER7)); lst.Append(tstrnew(LAY_EQ_USER8)); lst.Append(tstrnew(LAY_TEXT)); lst.Append(tstrnew(LAY_BORDER)); lst.Append(tstrnew(LAY_EQUIP_PIPE)); lst.Append(tstrnew(LAY_EQUIP_GULLY)); lst.Append(tstrnew(LAY_EQUIP_VALVE)); lst.Append(tstrnew(LAY_EQUIP_LEAK)); lst.Append(tstrnew(LAY_EQUIP_SPRINKLE)); lst.Append(tstrnew(LAY_EQUIP_HYDRANT)); lst.Append(tstrnew(LAY_TWT_WATERTANK)); lst.Append(tstrnew(LAY_TWT_PUMP)); lst.Append(tstrnew(LAY_TWT_OUT)); lst.Append(tstrnew(LAY_TWT_GULLY)); lst.Append(tstrnew(LAY_TWT_SECTION)); lst.Append(tstrnew(LAY_TWT_FLANGE)); lst.Append(tstrnew(LAY_CALC_TEXT)); lst.Append(tstrnew(LAY_PIPE_DIM)); lst.Append(tstrnew(LAY_TWT_TREE)); lst.Append(tstrnew(LAY_TWT_ROAD)); lst.Append(tstrnew(LAY_TWT_DOTE)); lst.Append(tstrnew(LAY_TWT_DASH)); lst.Append(tstrnew(LAY_WELL_RAIN)); lst.Append(tstrnew(LAY_WELL_USELESS)); lst.Append(tstrnew(LAY_WELL_DIRT)); lst.Append(tstrnew(LAY_WELL_FEED)); lst.Append(tstrnew(LAY_WELL_FIRE)); lst.Append(tstrnew(LAY_WELL_OTHER)); lst.Append(tstrnew(LAY_WELL_TEXT)); lst.Append(tstrnew(LAY_TWT_GRID)); lst.Append(tstrnew(LAY_WELL_USED)); lst.Append(tstrnew(LAY_VPIPE_DIM)); lst.Append(tstrnew(LAY_DIM)); lst.Append(tstrnew(LAY_ELEV_DIM)); lst.Append(tstrnew(LAY_INDEX_DIM)); lst.Append(tstrnew(LAY_LEADER_DIM)); lst.Append(tstrnew(LAY_COORD_DIM)); lst.Append(tstrnew(LAY_OTHER_DIM)); lst.Append(tstrnew(LAY_SHEET)); lst.Append(tstrnew(_T("TWT"))); } XString xsDbfFile; if(!FindFile(_T("userlayer.dbf"), xsDbfFile)) { MessageBox(_T("对不起,没有发现userlayer.dbf文件!")); return; } CodeBase db; XDbfTable *pTable = db.Open(xsDbfFile); if(!pTable) { CString csTmp; csTmp.Format(_T("%s文件只读或损坏!"), xsDbfFile); AfxMessageBox(csTmp); // AfxMessageBox(_T("TK文件只读或损坏!")); return; } for(pTable->MoveFirst();!pTable->IsEOF();pTable->MoveNext()){ int id(0); CString sName; GET_FIELD(pTable, _T("product"), id); GET_FIELD(pTable, _T("name"), sName); if(id == g_nProductId){ lst.Append(tstrnew(sName)); } } ShowLayer(lst, m_bIsTelOn); } void CLayerManBar::OnButOpen2() { acDocManager->sendStringToExecute(curDoc(), _T("OpenLayer "), true, false, false); } void CLayerManBar::OnButUnLock() { acDocManager->sendStringToExecute(curDoc(), _T("UNLOCKSELLAYER "), true, false, false); } void CLayerManBar::OnButLock() { acDocManager->sendStringToExecute(curDoc(), _T("LOCKSELLAYER "), true, false, false); } void CLayerManBar::OnButLock2() { acDocManager->sendStringToExecute(curDoc(), _T("sfxc "), true, false, false); } void CLayerManBar::OnButClose() { acDocManager->sendStringToExecute(curDoc(), _T("CloseSelLayer "), true, false, false); } void CLayerManBar::OnButDel() { acDocManager->sendStringToExecute(curDoc(), _T("EraseSelLayer "), true, false, false); } void CLayerManBar::OnButOpen() { acDocManager->sendStringToExecute(curDoc(), _T("OpenSelLayer "), true, false, false); } void CLayerManBar::OnButOpenAll() { g_lstCloseLay.Reset(); m_bIsTchOn = TRUE; m_bIsTelOn = TRUE; CString csTmp = _T("ID_LIGHT_ON"); HBITMAP hBitmap=(HBITMAP)::LoadImage(g_hTchDll, csTmp, IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butTgLay.SetIcon(hBitmap, NULL, 16, 15); HBITMAP hBitmap0 = (HBITMAP)::LoadImage(g_hTchDll, csTmp, IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butTelLay.SetIcon(hBitmap0, NULL, 16, 15); acDocManager->sendStringToExecute(curDoc(), _T("OpenAllLayer "), true, false, false); } extern BOOL SetLayerLock(const TCHAR*szLayerName, BOOL bLock); void CLayerManBar::LuckLayer(XStringList &lstShow, BOOL bLock) { XSymbolList lstLayer(_T("LAYER")); lstLayer.QuickSort(_tcscmp); int len = lstLayer.Length(); for(int i=0; i -1){ //通配符 int idx = csShow.Find(_T("*")); if(csShow.Find(_T("*"), idx+1) > 0) //不支持多* continue; CString csLeft, csRight; csLeft = csShow.Left(idx); csRight = csShow.Right(csShow.GetLength() - idx - 1); //把通配符左右2边的字符串都取出来, 如果该图层含有其内容的,都算匹配 if(csLeft != _T("")){ int idx = csLayer.Find(csLeft); if(idx == 0){ //在开头 flag = TRUE; break; } } if(csRight != _T("")){ if(csLayer.Find(csRight) > -1){ int idx = csLayer.Find(csRight); idx += csRight.GetLength(); if(idx == csLayer.GetLength()){ //在结尾 flag = TRUE; break; } } } } } if(flag){ AcDbDatabase *dwg=acdbCurDwg(); AcAxDocLock docLock(dwg); SetLayerLock((const TCHAR *)csLayer, bLock); } } actrTransactionManager->flushGraphics(); //acad 刷新 acedUpdateDisplay(); //解决光标不在VIEW上无法刷新的问题 2008-7-31 sr 王勇光的方法 } void CLayerManBar::ShowLayer(XStringList &lstShow, BOOL _topen) { XSymbolList lstLayer(_T("LAYER")); lstLayer.QuickSort(_tcscmp); int len = lstLayer.Length(); for(int i=0; i -1){ //通配符 int idx = csShow.Find(_T("*")); if(csShow.Find(_T("*"), idx+1) > 0) //不支持多* continue; CString csLeft, csRight; csLeft = csShow.Left(idx); csRight = csShow.Right(csShow.GetLength() - idx - 1); //把通配符左右2边的字符串都取出来, 如果该图层含有其内容的,都算匹配 if(csLeft != _T("")){ int idx = csLayer.Find(csLeft); if(idx == 0){ //在开头 flag = TRUE; break; } } if(csRight != _T("")){ if(csLayer.Find(csRight) > -1){ int idx = csLayer.Find(csRight); idx += csRight.GetLength(); if(idx == csLayer.GetLength()){ //在结尾 flag = TRUE; break; } } } } } if(flag){ AcDbDatabase *dwg=acdbCurDwg(); AcAxDocLock docLock(dwg); SetLayerOnOff((const TCHAR *)csLayer, _topen); } } actrTransactionManager->flushGraphics(); //acad 刷新 acedUpdateDisplay(); //解决光标不在VIEW上无法刷新的问题 2008-7-31 sr 王勇光的方法 // CWnd *pView = acedGetAcadDwgView(); // if(pView){ // pView->SetFocus(); // CRect rect; // CPoint pt; // pView->GetWindowRect(rect); // pt = rect.CenterPoint(); // SetCursorPos(pt.x, pt.y ); // } } void CLayerManBar::OnButLuckTel() { CAcModuleResourceOverride vTemp; m_bIsTelLucked = !m_bIsTelLucked; CString csTmp = _T("TWT_16_SXZC"); if(!m_bIsTelLucked) csTmp = _T("TWT_16_JXZC"); HBITMAP hBitmap0 = (HBITMAP)::LoadImage(g_hTchDll, csTmp, IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butLuckTel.SetIcon(hBitmap0, NULL, 16, 15); XStringList lst; if(g_nProductId==16){ lst.Append(tstrnew(LAY_EQUIP_ILLUME)); lst.Append(tstrnew(LAY_EQUIP_POWER)); lst.Append(tstrnew(LAY_EQUIP_FIRE)); lst.Append(tstrnew(LAY_EQUIP_WEAK)); lst.Append(tstrnew(LAY_EQUIP_CUPBOARD)); lst.Append(tstrnew(LAY_TEL_ELEMENT)); lst.Append(tstrnew(LAY_TEL_DOT)); lst.Append(tstrnew(LAY_TEL_LWIRE)); lst.Append(tstrnew(LAY_TEL_SHTLN)); lst.Append(tstrnew(LAY_WIRE_ILLUME)); lst.Append(tstrnew(LAY_WIRE_POWER)); lst.Append(tstrnew(LAY_WIRE_FIRE)); lst.Append(tstrnew(LAY_WIRE_WEAK)); lst.Append(tstrnew(LAY_WIRE_SYSTEM)); lst.Append(tstrnew(LAY_WIRE_BUS)); lst.Append(tstrnew(LAY_WIRE_GROUND)); lst.Append(tstrnew(LAY_WIRE_THUNDER)); lst.Append(tstrnew(LAY_DIM_ILLUME)); lst.Append(tstrnew(LAY_DIM_POWER)); lst.Append(tstrnew(LAY_DIM_FIRE)); lst.Append(tstrnew(LAY_DIM_WEAK)); lst.Append(tstrnew(LAY_DIM_SYSTEM)); lst.Append(tstrnew(LAY_DIM_CUPBOARD)); lst.Append(tstrnew(LAY_TEL_THUNDER)); lst.Append(tstrnew(LAY_TEL_DIM_TEXT)); lst.Append(tstrnew(LAY_DIM)); lst.Append(tstrnew(LAY_TEXT)); lst.Append(tstrnew(LAY_BORDER)); lst.Append(tstrnew(LAY_TEL_GRID)); lst.Append(tstrnew(LAY_TEL_SOCK)); lst.Append(tstrnew(LAY_TEL_SOCK_DOTE)); lst.Append(tstrnew(LAY_TEL_TERM)); lst.Append(tstrnew(LAY_WIRE_EMERG)); lst.Append(tstrnew(LAY_WIRE_USER1)); lst.Append(tstrnew(LAY_WIRE_USER2)); } else if(g_nProductId==14){ lst.Append(tstrnew(LAY_PIPE_FEED)); lst.Append(tstrnew(LAY_PIPE_FEED2)); lst.Append(tstrnew(LAY_PIPE_FEED3)); lst.Append(tstrnew(LAY_PIPE_HEADFEED)); lst.Append(tstrnew(LAY_PIPE_HEADFEED2)); lst.Append(tstrnew(LAY_PIPE_HEADFEED3)); lst.Append(tstrnew(LAY_PIPE_HEADBACK)); lst.Append(tstrnew(LAY_PIPE_HEADBACK2)); lst.Append(tstrnew(LAY_PIPE_HEADBACK3)); lst.Append(tstrnew(LAY_PIPE_DIRT)); lst.Append(tstrnew(LAY_PIPE_USELESS)); lst.Append(tstrnew(LAY_PIPE_RAIN)); lst.Append(tstrnew(LAY_PIPE_USED)); lst.Append(tstrnew(LAY_PIPE_FIRE)); lst.Append(tstrnew(LAY_PIPE_FIRE2)); lst.Append(tstrnew(LAY_PIPE_FIRE3)); lst.Append(tstrnew(LAY_PIPE_SPRINKLE)); lst.Append(tstrnew(LAY_PIPE_COAGULATE)); lst.Append(tstrnew(LAY_PIPE_DRINK)); lst.Append(tstrnew(LAY_PIPE_PRESSDIRT)); lst.Append(tstrnew(LAY_PIPE_PRESSUSELESS)); lst.Append(tstrnew(LAY_PIPE_PRESSRAIN)); lst.Append(tstrnew(LAY_PIPE_OTHER)); lst.Append(tstrnew(LAY_PIPE_DOUBLE)); lst.Append(tstrnew(LAY_PIPE_DIM)); lst.Append(tstrnew(LAY_PIPE_USER1)); lst.Append(tstrnew(LAY_PIPE_USER2)); lst.Append(tstrnew(LAY_PIPE_USER3)); // cet 2012.4.12 add user3-user8 lst.Append(tstrnew(LAY_PIPE_USER4)); lst.Append(tstrnew(LAY_PIPE_USER5)); lst.Append(tstrnew(LAY_PIPE_USER6)); lst.Append(tstrnew(LAY_PIPE_USER7)); lst.Append(tstrnew(LAY_PIPE_USER8)); lst.Append(tstrnew(LAY_VPIPE_USER1)); lst.Append(tstrnew(LAY_VPIPE_USER2)); lst.Append(tstrnew(LAY_VPIPE_USER3)); // cet 2012.4.12 add user3-user8 lst.Append(tstrnew(LAY_VPIPE_USER4)); lst.Append(tstrnew(LAY_VPIPE_USER5)); lst.Append(tstrnew(LAY_VPIPE_USER6)); lst.Append(tstrnew(LAY_VPIPE_USER7)); lst.Append(tstrnew(LAY_VPIPE_USER8)); lst.Append(tstrnew(LAY_VPIPE_FEED)); lst.Append(tstrnew(LAY_VPIPE_FEED2)); lst.Append(tstrnew(LAY_VPIPE_FEED3)); lst.Append(tstrnew(LAY_VPIPE_HEADFEED)); lst.Append(tstrnew(LAY_VPIPE_HEADFEED2)); lst.Append(tstrnew(LAY_VPIPE_HEADFEED3)); lst.Append(tstrnew(LAY_VPIPE_HEADBACK)); lst.Append(tstrnew(LAY_VPIPE_HEADBACK2)); lst.Append(tstrnew(LAY_VPIPE_HEADBACK3)); lst.Append(tstrnew(LAY_VPIPE_DIRT)); lst.Append(tstrnew(LAY_VPIPE_USELESS)); lst.Append(tstrnew(LAY_VPIPE_RAIN)); lst.Append(tstrnew(LAY_VPIPE_USED)); lst.Append(tstrnew(LAY_VPIPE_FIRE)); lst.Append(tstrnew(LAY_VPIPE_FIRE2)); lst.Append(tstrnew(LAY_VPIPE_FIRE3)); lst.Append(tstrnew(LAY_VPIPE_SPRINKLE)); lst.Append(tstrnew(LAY_VPIPE_COAGULATE)); lst.Append(tstrnew(LAY_VPIPE_DRINK)); lst.Append(tstrnew(LAY_VPIPE_PRESSDIRT)); lst.Append(tstrnew(LAY_VPIPE_PRESSUSELESS)); lst.Append(tstrnew(LAY_VPIPE_PRESSRAIN)); lst.Append(tstrnew(LAY_VPIPE_OTHER)); lst.Append(tstrnew(LAY_TEXT)); lst.Append(tstrnew(LAY_BORDER)); lst.Append(tstrnew(LAY_EQUIP_PIPE)); lst.Append(tstrnew(LAY_EQUIP_VALVE)); lst.Append(tstrnew(LAY_EQUIP_SPRINKLE)); lst.Append(tstrnew(LAY_EQUIP_HYDRANT)); lst.Append(tstrnew(LAY_TWT_WATERTANK)); lst.Append(tstrnew(LAY_TWT_PUMP)); lst.Append(tstrnew(LAY_TWT_OUT)); lst.Append(tstrnew(LAY_TWT_GULLY)); lst.Append(tstrnew(LAY_TWT_SECTION)); lst.Append(tstrnew(LAY_TWT_FLANGE)); lst.Append(tstrnew(LAY_CALC_TEXT)); lst.Append(tstrnew(LAY_PIPE_DIM)); lst.Append(tstrnew(LAY_TWT_TREE)); lst.Append(tstrnew(LAY_TWT_ROAD)); lst.Append(tstrnew(LAY_TWT_DOTE)); lst.Append(tstrnew(LAY_TWT_DASH)); lst.Append(tstrnew(LAY_WELL_RAIN)); lst.Append(tstrnew(LAY_WELL_DIRT)); lst.Append(tstrnew(LAY_WELL_FEED)); lst.Append(tstrnew(LAY_WELL_FIRE)); lst.Append(tstrnew(LAY_WELL_OTHER)); lst.Append(tstrnew(LAY_WELL_TEXT)); lst.Append(tstrnew(LAY_TWT_GRID)); lst.Append(tstrnew(LAY_WELL_USED)); lst.Append(tstrnew(LAY_VPIPE_DIM)); lst.Append(tstrnew(LAY_DIM)); lst.Append(tstrnew(LAY_ELEV_DIM)); lst.Append(tstrnew(LAY_INDEX_DIM)); lst.Append(tstrnew(LAY_LEADER_DIM)); lst.Append(tstrnew(LAY_COORD_DIM)); lst.Append(tstrnew(LAY_OTHER_DIM)); lst.Append(tstrnew(LAY_SHEET)); lst.Append(tstrnew(_T("TWT"))); } XString xsDbfFile; if(!FindFile(_T("userlayer.dbf"), xsDbfFile)) { MessageBox(_T("对不起,没有发现userlayer.dbf文件!")); return; } CodeBase db; XDbfTable *pTable = db.Open(xsDbfFile); if(!pTable) { CString csTmp; csTmp.Format(_T("%s文件只读或损坏!"), xsDbfFile); AfxMessageBox(csTmp); // AfxMessageBox(_T("TK文件只读或损坏!")); return; } for(pTable->MoveFirst();!pTable->IsEOF();pTable->MoveNext()){ int id(0); CString sName; GET_FIELD(pTable, _T("product"), id); GET_FIELD(pTable, _T("name"), sName); if(id == g_nProductId){ lst.Append(tstrnew(sName)); } } LuckLayer(lst, m_bIsTelLucked); } void CLayerManBar::OnButLuckTch() { CAcModuleResourceOverride vTemp; m_bIsTchLucked = !m_bIsTchLucked; CString csTmp = _T("TWT_16_SXZC"); if(!m_bIsTchLucked) csTmp = _T("TWT_16_JXZC"); HBITMAP hBitmap=(HBITMAP)::LoadImage(g_hTchDll, csTmp, IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR ); m_butLuckTch.SetIcon(hBitmap, NULL, 16, 15); XStringList lst; lst.Append(tstrnew(LAY_AXIS)); lst.Append(tstrnew(LAY_BALCONY)); lst.Append(tstrnew(LAY_BORDER)); lst.Append(tstrnew(LAY_COLU)); lst.Append(tstrnew(LAY_WIN)); lst.Append(tstrnew(LAY_DIMAX)); lst.Append(tstrnew(LAY_GROUND)); lst.Append(tstrnew(LAY_WALL)); lst.Append(tstrnew(LAY_SURFACE)); lst.Append(tstrnew(LAY_ROOF)); lst.Append(tstrnew(LAY_STAIR)); lst.Append(tstrnew(LAY_SANIWARE)); lst.Append(tstrnew(LAY_RAIL)); lst.Append(tstrnew(LAY_HANDRAIL)); lst.Append(tstrnew(LAY_SPACE)); lst.Append(tstrnew(LAY_VIEW)); lst.Append(tstrnew(LAY_AXIS_TEXT)); lst.Append(tstrnew(_T("PUB_DIM"))); //建筑的文字和标注 lst.Append(tstrnew(_T("PUB_TEXT"))); lst.Append(tstrnew(_T("PUB_TITLE"))); lst.Append(tstrnew(LAY_VIEWPORT)); lst.Append(tstrnew(LAY_HATCH)); lst.Append(tstrnew(LAY_OPENING_DIM)); lst.Append(tstrnew(LAY_S_LINE)); lst.Append(tstrnew(LAY_S_WIN)); lst.Append(tstrnew(LAY_S_BLOCK)); lst.Append(tstrnew(LAY_S_STAIR)); lst.Append(tstrnew(LAY_E_FLOOR)); lst.Append(tstrnew(LAY_E_LINE)); lst.Append(tstrnew(LAY_E_WIN)); lst.Append(tstrnew(LAY_E_COMP)); lst.Append(tstrnew(LAY_E_STAIR)); lst.Append(tstrnew(_T("TCH_保留"))); lst.Append(tstrnew(_T("PUB_WALL"))); XString xsDbfFile; if(!FindFile(_T("userlayer.dbf"), xsDbfFile)) { MessageBox(_T("对不起,没有发现userlayer.dbf文件!")); return; } CodeBase db; XDbfTable *pTable = db.Open(xsDbfFile); if(!pTable) { CString csTmp; csTmp.Format(_T("%s文件只读或损坏!"), xsDbfFile); AfxMessageBox(csTmp); // AfxMessageBox(_T("TK文件只读或损坏!")); return; } for(pTable->MoveFirst();!pTable->IsEOF();pTable->MoveNext()){ int id(0); CString sName, sComment; GET_FIELD(pTable, _T("product"), id); GET_FIELD(pTable, _T("name"), sName); if(id == 1){ lst.Append(tstrnew(sName)); } } LuckLayer(lst, m_bIsTchLucked); }