Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

332 lines
7.8 KiB
C++

#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<CString> 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