persistenttreectrl.h

来自「两个有关xml文件的操作类」· C头文件 代码 · 共 89 行

H
89
字号

// PersistentTreeCtrl.h v1.0
// Purpose: a treectrl can save& load it's item text& images.
// by hujinshan @2004-11-9 9:34:21

#if !defined(AFX_PERSISTENTTREECTRL_H__918F1BD9_E79C_4FAC_A8F8_A9ABA8C2E976__INCLUDED_)
#define AFX_PERSISTENTTREECTRL_H__918F1BD9_E79C_4FAC_A8F8_A9ABA8C2E976__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "XMLFile.h"
#include <string>
using std::string;
/////////////////////////////////////////////////////////////////////////////
// CPersistentTreeCtrl window

//!  CPersistentTreeCtrl class 保存、装载内容到XML文件 
/*!
  可用来保存、装载标签到XML文件的树控件。
*/
class CPersistentTreeCtrl : public CTreeCtrl
{
	
// Construction
public:
	CPersistentTreeCtrl();

// Attributes
public:	

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CPersistentTreeCtrl)
	//}}AFX_VIRTUAL

// Implementation
public:
	///fill the tree by nonsensical test items
	void InitTestItems();
	///get all items' label in a string broke with '>'
	string GetAllItemText();

	///load from a XML file
	bool Load(const char* filename, const char* tree_name="TreeName", bool bImage=false);
	///save to a XML file
	bool Save(const char* filename, const char* tree_name="TreeName", bool bImage=false);
	
	///delete a tree record form the specific xml file
	void DeleteTreeRecord(const char* filename, const char* tree_name);

	virtual ~CPersistentTreeCtrl();

	void SetImage(UINT id_bitmap);
	/// Generated message map functions
protected:
	void LoadItems(HTREEITEM hItem, MSXML2::IXMLDOMNodePtr& pNode, bool bImage=false);
	HTREEITEM SaveItems(void* pXmlfile,const char* item_name="TreeRoot",
		HTREEITEM hItem=NULL, string str_parent="", bool bImage=false);

	HTREEITEM TraverseItems(HTREEITEM hItem=NULL);

	bool HasDuplicate();
	HTREEITEM HasDuplicate(HTREEITEM hItem, bool& bDuplicate);//process total tree
	bool HasDuplicateChild(HTREEITEM hItem);//only process a item

	string str_msg;
	CImageList m_imagelist;

	//{{AFX_MSG(CPersistentTreeCtrl)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_PERSISTENTTREECTRL_H__918F1BD9_E79C_4FAC_A8F8_A9ABA8C2E976__INCLUDED_)

// end of file 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?