📄 rstreeview.h
字号:
#if !defined(AFX_RSTREEVIEW_H__CC7FE3B2_9496_489A_9CD5_467EE153D00B__INCLUDED_)
#define AFX_RSTREEVIEW_H__CC7FE3B2_9496_489A_9CD5_467EE153D00B__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// RSTreeView.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CRSTreeView view
enum DATASOURCE
{
GEOMETRY,
IMAGE
};
typedef struct tagTREEFEATURE //树视图的编码类数据结构
{
CString UserID;
BYTE Status;
} TREEFEATURE;
typedef struct tagTREELAYER //树视图的层数据结构
{
CString Name; //层名
BYTE Status; //状态
// DATASOURCE DataSource; //数据源(几何/影像)
CArray < TREEFEATURE*, TREEFEATURE* > Features; //编码类
CString ImageOrientFile; //影像定位文件
} TREELAYER;
//class CRSWorkUnit;
//class CRSDoc;
//class CRSView;
class CRSTreeView : public CTreeView
{
public:
enum TYPE
{
FEATURE,
LAYER,
ROOT
};
protected:
CRSTreeView(); // protected constructor used by dynamic creation
DECLARE_DYNCREATE(CRSTreeView)
// Attributes
public:
CRSDoc* GetDocument();
CRSWorkUnit* m_pWorkUnit;
CView* m_pMainView;
CTreeCtrl* m_pTreeCtrl;
protected:
TREEFEATURE* GetFeatureItem(HTREEITEM hItem); //得到某一编码类节点的信息
TREELAYER* GetLayerItem(HTREEITEM hItem); //得到某一层节点的层信息
public:
CArray < TREELAYER*, TREELAYER* > m_Layers;
protected:
CImageList* m_pImageList;
CImageList* m_pStateList;
//temp attribute:
protected:
HTREEITEM m_hHitItem; //保存右键单击时的节点
// Operations
public:
//根据指定坐标的得到相应节点的信息
BOOL GetCurItem(HTREEITEM& hItem, TYPE& type, CPoint point);
//指定坐标的节点是否根节点
BOOL IsRootNode(CPoint point);
//指定坐标的节点是否编码类节点
BOOL IsFeatureNode(CPoint point, HTREEITEM& hItem);
//指定坐标的节点是否层节点
BOOL IsLayerNode(CPoint point, HTREEITEM& hItem);
//指定节点是否层节点
BOOL IsLayerNode(HTREEITEM hItem, CString& LayerName);
//指定节点是否编码类节点
BOOL IsFeatureNode(HTREEITEM hItem, CString& UserID);
//增加新层
BOOL AddANewLayer(CString LayerName);
//增加编码类到层
BOOL AddAFeatureToLayer(CString UserID, CString LayerName);
//根据层名找到对应节点
HTREEITEM FindLayerItem(CString LayerName);
//根据编码类名和层名找到某一层对应的编码类节点
HTREEITEM FindFeatureItemInLayer(CString UserID, CString LayerName);
//转换指定层节点的状态
void EnableLayer(HTREEITEM hItem, UINT nFlag, BOOL bTrue);
//转换指定编码类节点的状态
void EnableFeature(HTREEITEM hItem, UINT nFlag, BOOL bTrue);
//初始化树视图
void Initialize(CRSWorkUnit* pWorkUnit);
//根据工作元信息初始化树视图
void InitializeTreeCtrl(CRSWorkUnit* pWorkUnit);
//根据工作元状态文件初始化树视图
BOOL InitializeTreeCtrl(CString Path, CString WUName);
//保存工作元状态文件
BOOL SaveWULayerStatus();
//清除保存的层及编码类信息
void ClearLayerTree();
//当前选择项改变
void ChangeSelect(int type, CString value) ;
//for drag and drop
protected:
CImageList* m_pDragImage;
BOOL m_bLDragging;
HTREEITEM m_hitemDrag, m_hitemDrop;
//拷贝项目
HTREEITEM CopyItem( HTREEITEM hItem, HTREEITEM htiNewParent,
HTREEITEM htiAfter = TVI_LAST );
//拷贝项目及子项
HTREEITEM CopyBranch( HTREEITEM htiBranch, HTREEITEM htiNewParent,
HTREEITEM htiAfter = TVI_LAST );
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CRSTreeView)
public:
virtual void OnInitialUpdate();
protected:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual void PreSubclassWindow();
//}}AFX_VIRTUAL
// Implementation
protected:
virtual ~CRSTreeView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
// Generated message map functions
protected:
//{{AFX_MSG(CRSTreeView)
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
afx_msg void OnAddNewLayer();
afx_msg void OnLayerProperty();
afx_msg void OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
//}}AFX_MSG
LRESULT OnNewImageLayerAdded(WPARAM wParam, LPARAM lParam);
LRESULT OnNewLayerAdded(WPARAM wParam, LPARAM lParam);
LRESULT OnFeatureAddedToLayer(WPARAM wParam, LPARAM lParam);
LRESULT OnFeatureRemovedFromLayer(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_RSTREEVIEW_H__CC7FE3B2_9496_489A_9CD5_467EE153D00B__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -