⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rstreeview.h

📁 c语言实现的遥感图像处理的一些基本操作
💻 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 + -