#pragma once #include "resource.h" #include "supergridctrl.h" #include #include class CPipeSysSettingList; class CPipeSystemSettingDlg : public CDialog { DECLARE_DYNAMIC(CPipeSystemSettingDlg) public: struct RECORD { int outClr, innClr; double innLw, outLw; AcDbObjectId outLt, innLt; CString outLy, innLy, oldSys, newSys; }; typedef std::map MAP_RECORD; typedef struct PipeSysLayer { TCHAR layerCenter[256]; TCHAR lineTypeCenter[256]; int nclrCenter; double dCenlinewidth; TCHAR layerOutline[256]; TCHAR lineTypeOutline[256]; int nclrOutline; double dOutlinewidth; TCHAR layer[256]; TCHAR lineType[256]; int nclr; double dlinewidth; int nCheckOK;//3 表示三段提取正确 至少 2 }PIPESYSLAYER; public: CPipeSystemSettingDlg(CWnd* pParent = NULL); // standard constructor virtual ~CPipeSystemSettingDlg(); // Dialog Data enum { IDD = IDD_PIPE_SYSTEM_SETTING }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() afx_msg void OnBntClickAdd(); afx_msg void OnBntClickDel(); afx_msg void OnBntClickExport(); afx_msg void OnBntClickImport(); afx_msg void OnBntLoadCurDwg(); afx_msg void OnOK(); private: void refreshListCtrl(); CTreeItem* addRootRecord(LPCTSTR title); void addChildRecord(CTreeItem *pTree , LPCTSTR title , LPCTSTR clr , LPCTSTR linetype , LPCTSTR lineweight , LPCTSTR layer ); void AddMapData(CString &sSysName,CMapStringToPtr &mapName2Data, AcDbLayerTableRecord *pRc, int nPos); bool AddSys(CString &sName, PipeSysLayer *psl, CStdioFile *pFile = NULL); private: CImageList m_image; CStatic m_ctrlPos; CPipeSysSettingList *m_pListCtrl; BOOL m_bUpdateAllEntity; BOOL m_bUseOutClrFor3D; CUIISQLiteServer m_db; }; class CPipeSysSettingList : public CSuperGridCtrl { public: typedef CPipeSystemSettingDlg::MAP_RECORD MAP_RECORD; public: CPipeSysSettingList(); virtual ~CPipeSysSettingList(); public: void Initialize(); bool hasModify(LPCTSTR sys); void getRecords(MAP_RECORD &rcs, bool bAll); protected: virtual BOOL PreTranslateMessage(MSG *pMsg); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg BOOL OnEndlabeledit(NMHDR *pNMHDR, LRESULT *pResult); DECLARE_MESSAGE_MAP() public: CUIISQLiteServer *m_pDb; CImageList m_image; // 被修改的行号 std::set m_setOfModify; // 如果系统名称被修改,则保存到这里 // first-new second-old std::map m_mapOfSysModify; };