📄 persistenttreectrl.h
字号:
// 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -