#ifndef PRJECT_MANAGER_H #define PRJECT_MANAGER_H #define TPR_MANGER_TITLE _T("工程管理") #define FLOOR_GROUP _T("平面图") #include "groupbox.h" //////////////////////////////////////////////////////// // TFileTreeComboBox // “工程管理”下拉列表控件 class TFileTreeComboBox: public CComboBox { protected: CMenu m_menu; PDList m_lstRecent; // 最近打开的工程 public: TFileTreeComboBox(); virtual ~TFileTreeComboBox(); void DoNewProject(); void DoOpenProject(); void DoSetProject(); void DoImportFloor(); void DoExportFloor(); void DoSaveProject(); void DoRecentProject(int nPos,bool bRefresh=true); void AddToRecent(const CString &szRecent); DECLARE_MESSAGE_MAP() afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnMenuCommand(UINT nID); afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct); }; //////////////////////////////////////////////////////////// // TFileTreeData class TFileTreeData { public: TFileTreeData(){} TFileTreeData(int nType, HTREEITEM hItem, TProjectGroupItem *pParentGroup, TProjectItem *pGroup) :m_nType(nType), m_hItem(hItem), m_pGroup(pGroup), m_pParentGroup(pParentGroup){} public: int m_nType; HTREEITEM m_hItem; TProjectItem *m_pGroup; TProjectGroupItem *m_pParentGroup; }; //////////////////////////////////////////////////////////// // TFileTreeCtrl class TFileTreeCtrl: public CTreeCtrl { public: TFileTreeCtrl(); TProjectGroupItem *m_pCurGroup; BOOL InitTreeCtrl(); HTREEITEM InsertItemEx(TProjectItem *pGroup, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST); void DeleteItemEx(HTREEITEM hItem); void ExpandAll(); void CollapseAll(); virtual BOOL PreTranslateMessage(MSG* pMsg); protected: BOOL m_bEdit; UINT m_TimerTicks; // Zyu modify on 100722,支持64位 //UINT m_nScrollTimerID; UINT_PTR m_nScrollTimerID; CPoint m_HoverPoint; //UINT m_nHoverTimerID; UINT_PTR m_nHoverTimerID; DWORD m_dwDragStart; BOOL m_bDragging; CImageList* m_pDragImage; HTREEITEM m_hItemDragS; HTREEITEM m_hItemDragD; int m_nShowFlag; CPoint m_ptSta; CPoint m_ptEnd; BOOL m_bRub; void DoOpenDrawing(); void DoInsDrawing(); void DoDelDrawing(); void DoAddDrawing(); void DoAddChildCollect(); void DoInsCollect(); void DoRenCollect(); void DoDelCollect(); void DoExpandCollect(); void DoCollapseCollect(); void DoExpandWorks(); void DoCollapseWorks(); int GetShowFlag(HTREEITEM hItem, CPoint pt); void DrawTempLine(CPoint ptSta, CPoint ptEnd); HTREEITEM GroupToTree(TProjectGroupItem *pGroup, HTREEITEM hParent, HTREEITEM hInsertAfter = TVI_LAST); HTREEITEM CopyItem(HTREEITEM hItem, HTREEITEM htiNewParent, HTREEITEM htiAfter); HTREEITEM CopyBranch(HTREEITEM htiBranch, HTREEITEM htiNewParent, HTREEITEM htiAfter); void DeleteAllItemData(HTREEITEM hItem = TVI_ROOT); afx_msg void OnDestroy(){DeleteAllItemData();CTreeCtrl::OnDestroy();}//ok afx_msg void OnMenuCommand(UINT id); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnTvnEndlabeledit(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnTvnBegindrag(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); // Zyu modify on 100721,支持64位 //afx_msg void OnTimer(UINT nIDEvent); afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg void OnTvnBeginlabeledit(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnTvnSelchanged(NMHDR *pNMHDR, LRESULT *pResult); DECLARE_MESSAGE_MAP() }; #if ADS<16 class CAdUiPaletteSet:public CAcUiDockControlBar { public: DECLARE_DYNAMIC(CAdUiPaletteSet) DECLARE_MESSAGE_MAP(); }; #endif /////////////////////////////////////////////////////// // TProjectBar // 工程管理工具条 class TProjectBar: public CAdUiPaletteSet { public: BitTable m_unfoldFlags; WGroupBoxes m_allGroups; TFileTreeComboBox m_comboBox; // 下拉列表 CFont m_font; XString m_sCurCmd; // 命令 public: TProjectBar(); void AddGroup(WGroupBox*pGroup, UINT idTemplate) { // ok m_allGroups.AddGroup(pGroup,idTemplate); } void Refresh(); WGroupBox* FindGroupBox(const TCHAR* sName) { // ok return m_allGroups.FindGroup(sName); } void OpenRecent(bool bRefresh = true) { // ok m_comboBox.DoRecentProject(0,bRefresh); } void SendCommand(XString sCmd) { // ok m_sCurCmd = sCmd; SetTimer(1, 1, NULL); } public: virtual void SizeChanged(CRect*lpRect,BOOL bfloating,int flags); DECLARE_MESSAGE_MAP() afx_msg int OnCreate(LPCREATESTRUCT lpcs); // Zyu modify on 100721,支持64位 //afx_msg LONG OnAcadKeepFocus ( UINT, LONG ); afx_msg LONG_PTR OnAcadKeepFocus(UINT_PTR, LONG_PTR); afx_msg void OnDestroy(); afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg LRESULT OnRefreshMsg(WPARAM wp, LPARAM lp); }; extern TProjectBar g_projectBar; //////////////////////////////////////////////////////////// // TFileManager——图纸 class TFileManager:public WGroupBox { public: TFileTreeCtrl m_ctrlTree; // 控件 CToolBarCtrl m_toolBar; protected: CImageList m_ImageList; void InitToolbar(); void DoDrawingList(); virtual BOOL OnInitDialog(); virtual void DoDataExchange(CDataExchange* pDX); public: DECLARE_MESSAGE_MAP() afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnClickToolBar(UINT nID); afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult); }; //////////////////////////////////////////////////////////// // TFloorGridData class TFloorGridData : public WRowData { public: CString m_szName; // 图纸名称 CString m_sLayerNo; double m_dHeight; int m_iFlag; XPoint m_ptBase; XPoint m_ptMin, m_ptMax; public: TFloorGridData(){ m_iFlag = 0; } }; //////////////////////////////////////////////////////////// // TFloorGrid——楼层表格 class TFloorGrid: public WDGrid { public: TProjectGroupItem *m_pCurGroup; TFloorGrid(); void SetData(TProjectGroupItem *pGroup); void ExtendDataToGrid(const TFloorGridData *pData, int nRow); TFloorGridData *GridToExtendData(int nRow); void AppendToTreeCtrl(); CString GetLayerNo(); int GetFirstNo(int nRow); int GetLastNo(int nRow); public: virtual bool OnCellButtonDown(WDGridCell &cell, CString &res); virtual bool OnCellButtonTip(long row, long col, CString &res) const { // ok res = _T("选楼层文件"); return true; } virtual bool OnRowTip(long row, CString&res) const { // ok res = _T("双击此处查看楼层范围"); return true; } virtual void OnDataChanged(); virtual void OnDblClick(WDGridRow&row); }; //////////////////////////////////////////////////////////// // TFloorTable——楼层表(包括表格控件和命令按钮) class TFloorTable: public WGroupBox { public: TProjectGroupItem *m_pCurGroup; // 当前工程文件组 CToolBarCtrl m_toolBar; TFloorGrid m_grid; public: virtual BOOL OnInitDialog(); void InitToolbar(); void InitGrid(); public: void DoSelectFile(); void DoSelectPart(); void DoBuildingModel(); void DoBuildingElev(); void DoBuildingSect(); void DoCheckOpening(); void DoOpeningTable(); void SelectPart(int nCur, XPoint ptMin, XPoint ptMax, XPoint ptBase); void AppendToTreeCtrl() { m_grid.AppendToTreeCtrl(); } protected: DECLARE_MESSAGE_MAP() afx_msg void OnSize(UINT nType,int cx,int cy); afx_msg void OnClickToolBar(UINT nID); afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult); }; /////////////////////////////////////////////////////////////// // TAttribute——属性 class TAttribute: public WGroupBox { public: CString m_szFileName; CStatic m_ctrlPreview; void SetPreviewFile(const TCHAR* pszDwgfilename); protected: virtual void DoDataExchange(CDataExchange* pDX); public: DECLARE_MESSAGE_MAP() afx_msg void OnPaint(); afx_msg void OnSize(UINT nType, int cx, int cy); }; #endif