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

📄 treelistctrl.h

📁 一个关于数据结结的
💻 H
📖 第 1 页 / 共 2 页
字号:

// Attributes
public:
	// ***************************** CTreeCtrl ******************************
	int		GetCount();

	CImageList*	GetImageList();										// retrieve image list of global treelist
	void		SetImageList( CImageList* pImageList );				// set image list of global treelist

	CTreeListItem* GetNextItem( CTreeListItem* pItem, UINT nCode );

	BOOL		ItemHasChildren( CTreeListItem* pItem );

	CTreeListItem* GetChildItem( CTreeListItem* pItem );
	CTreeListItem* GetNextSiblingItem( CTreeListItem* pItem );
	CTreeListItem* GetPrevSiblingItem( CTreeListItem* pItem );
	CTreeListItem* GetParentItem( CTreeListItem* pItem );

	CTreeListItem* GetFirstVisibleItem();
	CTreeListItem* GetNextVisibleItem( CTreeListItem* pItem );
	CTreeListItem* GetPrevVisibleItem( CTreeListItem* pItem );

	CTreeListItem* GetSelectedItem();
	CTreeListItem* GetNextSelectedItem( CTreeListItem* pItem );

	CTreeListItem* GetRootItem();

	DWORD	GetItemState( CTreeListItem* pItem, DWORD nStateMask = 0xFFFFFFFF );
	void	SetItemState( CTreeListItem* pItem, DWORD dwAddState, DWORD dwRemoveState = 0 );

	void	GetItemImage( CTreeListItem* pItem, int& nImage, int& nExpandImage, int& nSelectedImage, int& nExpandSelectedImage );
	void	SetItemImage( CTreeListItem* pItem, int nImage, int nExpandImage, int nSelectedImage, int nExpandSelectedImage );

	LPCTSTR	GetItemText( CTreeListItem* pItem, int nSubItem = 0 );
	BOOL	SetItemText( CTreeListItem* pItem, LPCTSTR lpszText, int nSubItem = 0 );

	DWORD	GetItemData( CTreeListItem* pItem );
	void	SetItemData( CTreeListItem* pItem, DWORD dwData );

	int		GetVisibleCount();

	int		SetItemHeight( int cyHeight = -1 );		// set height of row ( automatic )
	int		GetItemHeight();						// retrieve height of row

	COLORREF GetBkColor( int nColor = 0 );
	COLORREF SetBkColor( COLORREF clr, int nColor = 0 );

	COLORREF GetTextColor();
	COLORREF SetTextColor( COLORREF clr );
	
	int		GetCheck( CTreeListItem* pItem );
	void	SetCheck( CTreeListItem* pItem, BOOL bCheck = TRUE );

	int		GetLock( CTreeListItem* pItem );
	void	SetLock( CTreeListItem* pItem, BOOL bLock = TRUE );

	BOOL	GetItemRect( CTreeListItem* pItem, LPRECT lpRect );
	BOOL	GetItemRect( CTreeListItem* pItem, int iSubItem, LPRECT lpRect, BOOL bTextOnly );
	
	BOOL	EnsureVisible( CTreeListItem* pItem, int iSubItem );

	// ***************************** CListCtrl ******************************
	int		GetItemCount();
	int		GetNextItem( int nItem, int nFlags );

	POSITION	   GetFirstSelectedItemPosition();
	CTreeListItem* GetNextSelectedItem( POSITION& pos );

	int GetStringWidth( LPCTSTR lpsz );

	DWORD	SetColumnFormat( int nCol, DWORD dwAdd, DWORD dwRemove );
	DWORD	GetColumnFormat( int nCol, DWORD dwMask = 0xFFFFFFFF );

	DWORD	SetColumnModify( int nCol, DWORD dwModify );
	DWORD	GetColumnModify( int nCol );

	int		SetColumnWidth( int nCol, int nWidth, int nMin = 0, int nMax = 0 );
	int		GetColumnWidth( int nCol );

	int		SetColumnImage( int nCol, int iImage );
	int		GetColumnImage( int nCol );

	BOOL	SetColumnText( int nCol, LPCTSTR lpszText );
	LPCTSTR GetColumnText( int nCol );

	BOOL	SetColumnDefaultText( int nCol, LPCTSTR lpszText );
	LPCTSTR GetColumnDefaultText( int nCol );

	DWORD	GetItemState( int nItem, DWORD nStateMask = 0xFFFFFFFF );
	void	SetItemState( int nItem, DWORD dwAddState, DWORD dwRemoveState = 0 );

	void	GetItemImage( int nItem, int& nImage, int& nExpandImage, int& nSelectedImage, int& nExpandSelectedImage );
	void	SetItemImage( int nItem, int nImage, int nExpandImage, int nSelectedImage, int nExpandSelectedImage );

	LPCTSTR	GetItemText( int nItem, int nSubItem = 0 );
	BOOL	SetItemText( int nItem, int nSubItem, LPCTSTR lpszText );

	DWORD	GetItemData( int nItem );
	void	SetItemData( int nItem, DWORD dwData );

	BOOL	GetViewRect( LPRECT lpRect );
	int		GetTopIndex();
	int		GetCountPerPage();
	BOOL	GetOrigin( LPPOINT lpPoint );

	UINT	GetSelectedCount();
	BOOL	SetColumnOrderArray( int iCount, LPINT piArray );
	BOOL	GetColumnOrderArray( LPINT piArray, int iCount = -1 );

	CTreeListHeaderCtrl* GetHeaderCtrl();

	int GetSelectionMark();
	int SetSelectionMark( int iIndex );

	// *************************** CTreeListCtrl ****************************
	void	SetFont();
	CFont*	GetFont();

	DWORD	SetStyle( DWORD dwStyle );
	DWORD	GetStyle();

	DWORD	GetState( DWORD nStateMask = 0xFFFFFFFF );
	void	SetState( DWORD dwAddState, DWORD dwRemoveState = 0 );

	int		GetSelectColumn();

	int		GetColumnCount();

	void	ExchangeItem( CTreeListItem* pItemA, CTreeListItem* pItemB );
	void	MoveAfterItem( CTreeListItem* pItem, CTreeListItem* pAfter = NULL );

	BOOL	DragEnter( CTreeListCtrl* pTreeListCtrl );
	BOOL	DragLeave( CTreeListCtrl* pTreeListCtrl );
	int		DragOver( CTreeListCtrl* pTreeListCtrl, CPoint point, CTreeListItem** pp = NULL );
	int		Drop( CTreeListCtrl* pTreeListCtrl, CPoint point );

protected:
	int		GetWidth();								// retrieve display high of control
	int		GetHeight();							// retrieve display width of control

	int		GetColumns();							// retrieve columns

	int		GetVisibleCount( CTreeListItem* pParent );

	BOOL	GetItemRectTree( CTreeListItem* pItem, LPRECT lpRect );
	BOOL	GetItemRectMain( CTreeListItem* pItem, LPRECT lpRect );

private:
	void	StatChildAdd( CTreeListItem* pItem, int nChild, int nVisibleChild );
	void	StatChildDel( CTreeListItem* pItem, int nChild, int nVisibleChild );
	void	StatExpand( CTreeListItem* pItem );
	void	StatCollapse( CTreeListItem* pItem );
	void	SetItemParentStatus( CTreeListItem* pItem, DWORD dwMask );
	void	SetItemChildStatus( CTreeListItem* pItem, DWORD dwAdd, DWORD dwRemove = 0 );

	void	SetItemCheck( CTreeListItem* pItem, BOOL bAutoCheck = TRUE );
	void	SetItemLock( CTreeListItem* pItem, BOOL bAutoLock = TRUE );

// Operations
public:
	BOOL	InsertColumn( LPCTSTR lpszColumnHeading, DWORD dwFormat = TLF_DEFAULT_LEFT, int nWidth = 0, int iImage = -1, int nMin = 0, int nMax = 0);
	BOOL	DeleteColumn( int iCol );

	int		InsertItem( int nItem, LPCTSTR lpszItem );
	BOOL	DeleteItem( int nItem );

	CTreeListItem*	InsertItem( LPCTSTR lpszItem, CTreeListItem* pParent = TLI_ROOT, CTreeListItem* pInsertAfter = TLI_LAST );
	BOOL			DeleteItem( CTreeListItem* pItem = TLI_ROOT );
	BOOL			DeleteAllItems();

	BOOL	Expand( CTreeListItem* pItem, int nCode );
	BOOL	Select( CTreeListItem* pItem, int nCode );

	CTreeListItem*	HitTest( CPoint pt, int* pFlag = NULL, int* pSubItem = NULL, CRect* prcText = NULL );

	void	SelectItem( CTreeListItem* pItem, int iSubItem = 0, BOOL bClearLastSelected = TRUE );
	void	ActiveItem( CTreeListItem* pItem, int iSubItem = 0 );

	void	SetTargetItem( CTreeListItem* pItem = NULL );
	void	SetHoverItem( CTreeListItem* pItem = NULL );

protected:
	CTreeListItem*	InsertItemNew	( LPCTSTR lpszItem, CTreeListItem* pParent );
	CTreeListItem*	InsertItemFirst	( LPCTSTR lpszItem, CTreeListItem* pParent );
	CTreeListItem*	InsertItemNext	( LPCTSTR lpszItem, CTreeListItem* pParent, CTreeListItem* pInsertAfter );
	CTreeListItem*	GetLastChildItem( CTreeListItem* pParent = TLI_ROOT );
	CTreeListItem*	GetSortChildItem( CTreeListItem* pParent = TLI_ROOT );
	CTreeListItem*	GetValidChildItem( CTreeListItem* pParent, CTreeListItem* pChild);

	BOOL			Expand( CTreeListItem* pItem, int nCode, int iSubItem );

	CTreeListItem*	HitTest( CPoint pt, int* pFlag, int* pSubItem, CRect* prcText, CRect rcItem, CTreeListItem* pItem );

private:
	CTreeListItem*	InsertItemX( CTreeListItem* pParent, CTreeListItem* pNewItem );
	BOOL			DeleteItemX( CTreeListItem* pItem );
	BOOL			DeleteItemFast( CTreeListItem* pItem );

	CTreeListItem*	GetFirstShowItem( int nShowItem );
	CTreeListItem*	GetNextShowItem( CTreeListItem* pItem, BOOL bChild = TRUE );
	CTreeListItem*	GetNextVisibleItem( CTreeListItem* pItem, BOOL bChild );
	CTreeListItem*	GetPrevVisibleItem( CTreeListItem* pItem, BOOL bChild );
	CTreeListItem*	GetLastVisibleItem( CTreeListItem* pItem );

	CTreeListItem*	HitTestTree( CPoint pt, int* pFlag, CRect* prcText, CRect rcColumn, CTreeListItem* pItem );
	CTreeListItem*	HitTestMain( CPoint pt, int* pFlag, CRect* prcText, CRect rcColumn, CTreeListItem* pItem );
	CTreeListItem*	HitTestList( CPoint pt, int* pFlag, CRect* prcText, CRect rcColumn, CTreeListItem* pItem );

	CTreeListItem*  GetTreeListItem( int nItem );
	int				GetTreeListItem( CTreeListItem* pItem );

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CTreeListCtrl)
	public:
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	protected:
	virtual void PreSubclassWindow();
	//}}AFX_VIRTUAL

// Implementation
public:
	BOOL	SetCtrlFocus( CWnd* pWnd, BOOL bFocus = TRUE );

	BOOL	BeginModify( CTreeListItem* pItem, int iCol );
	BOOL	UpdateModify();
	BOOL	FinishModify();
	BOOL	CancelModify();

	CWnd*	GetControl( CTreeListItem* pItem, int iCol );

protected:
	LRESULT	Notify( DWORD dwMessage, CTreeListItem* pItem, int iCol );
	LRESULT NotifyDrop( DWORD dwMessage, CTreeListCtrl* pSource, CTreeListItem* pItem );
	void	Layout();
	void	DrawCtrl( CDC* pDC );
	void	DrawBkgnd( CDC* pDC, CRect rcClip );
	void	DrawBkgndBmp( CDC* pDC, CRect rcClip, CBitmap* pBkgnd );
	void	DrawItems( CDC* pDC, CRect rcClip );
	void	DrawItem( CDC* pDC, CRect rcItem, CTreeListItem* pItem );
	void	DrawGrid( CDC* pDC, CRect rcItem );
	void	DrawItemBkgnd( CDC* pDC, CRect rcItem, CTreeListItem* pItem );
	void	DrawItemExclude( CDC* pDC, CRect rcItem, CTreeListItem* pItem );
	void	DrawItemTree( CDC* pDC, CRect rcColumn, CTreeListItem* pItem, int iCol );
	void	DrawItemMain( CDC* pDC, CRect rcColumn, CTreeListItem* pItem, int iCol );
	void	DrawItemList( CDC* pDC, CRect rcColumn, CTreeListItem* pItem, int iCol );
	void	DrawItemTreeLine( CDC* pDC, CRect rcColumn, CRect rcTree, DWORD dwFormat );
	void	DrawItemTreeButton( CDC* pDC, CRect rcColumn, CRect rcTree, DWORD dwFormat );
	void	DrawItemTreeText( CDC* pDC, CRect rcBkgnd, CTreeListItem* pItem, int iCol );
	void	DrawItemListText( CDC* pDC, CRect rcBkgnd, CTreeListItem* pItem, int iCol );
	void	DrawItemText( CDC* pDC, CRect rcBkgnd, CRect rcText, CTreeListItem* pItem, int iCol );
	void	SetAllScroll();

	BOOL	PreTranslateKeyDownMessage( MSG* pMsg );
	BOOL	PreTranslateKeyDownMessage2( MSG* pMsg );
	
	int		GetPrevModifyCol();
	int		GetNextModifyCol();

	BOOL	UpdateModifyColumn();
	BOOL	UpdateModifyColumns();

	BOOL	BeginControl( CTreeListItem* pItem, int iCol );
	BOOL	CancelControl();
	BOOL	RestoreControl( CTreeListItem* pItem, int iCol );

	BOOL	BeginStatic( CTreeListItem* pItem, int iCol, CRect rcText );
	BOOL	CancelStatic();
	BOOL	RestoreStatic( CTreeListItem* pItem, int iCol, CRect rcText );

	BOOL	BeginEdit( CTreeListItem* pItem, int iCol, CRect rcText );
	BOOL	CancelEdit();
	BOOL	RestoreEdit( CTreeListItem* pItem, int iCol, CRect rcText );

	BOOL	BeginCombo( CTreeListItem* pItem, int iCol, CRect rcText );
	BOOL	CancelCombo();
	BOOL	RestoreCombo( CTreeListItem* pItem, int iCol, CRect rcText);

	BOOL	BeginDraging( CPoint point );
	BOOL	EndDraging( CPoint point );
	BOOL	DoDraging( CPoint point );
	BOOL	EndDraging();

private:
	void	SetHorzScroll( CRect* pPreClient );
	void	SetVertScroll( CRect* pPreClient );

	BOOL	IsInSelectsTree( CTreeListItem* pItem );

	// Generated message map functions
protected:
	//{{AFX_MSG(CTreeListCtrl)
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg void OnPaint();
	afx_msg void OnEnable(BOOL bEnable);
	afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
	afx_msg void OnNcPaint();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnSetFocus(CWnd* pOldWnd);
	afx_msg void OnKillFocus(CWnd* pNewWnd);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
	afx_msg void OnDestroy();
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnCancelMode();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

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

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

#endif // !defined(AFX_TREELISTCTRL_H__55B6E4E9_1E57_4FEE_AA05_77C052ACE9B5__INCLUDED_)

⌨️ 快捷键说明

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