windows-nt/Source/XPSP1/NT/drivers/ftapi/ftman/fttreevw.h

172 lines
5.7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
FTMan
File Name:
FTTreeVw.h
Abstract:
The definition of class CFTTreeView. It is a tree view displaying:
- all logical volumes
- all physical partitions that are not logical volumes
existing in the system
Author:
Cristian Teodorescu October 20, 1998
Notes:
Revision History:
--*/
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_FTTREEVW_H__B83E0005_6873_11D2_A297_00A0C9063765__INCLUDED_)
#define AFX_FTTREEVW_H__B83E0005_6873_11D2_A297_00A0C9063765__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "FTManDef.h"
class CFTDocument;
class CItemData;
class CFTTreeView : public CTreeView
{
protected: // create from serialization only
CFTTreeView();
DECLARE_DYNCREATE(CFTTreeView)
// Attributes
public:
CFTDocument* GetDocument();
// Operations
public:
// Get the current snapshot of the tree ( what items are expanded, what items are selected )
void GetSnapshot( TREE_SNAPSHOT& snaphshot );
// Refresh the content of the tree given a certain snapshot ( items expanded, items selected )
BOOL Refresh( TREE_SNAPSHOT& snapshot);
// Refresh the content of the tree based on the current snapshot ( items expanded, items selected )
BOOL Refresh();
// Performs some minor refreshment for the tree items. This should be called every TIMER_ELAPSE milliseconds.
void RefreshOnTimer();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFTTreeView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual void OnInitialUpdate(); // called first time after construct
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CFTTreeView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Insert item
HTREEITEM InsertItem(CItemData* pData, HTREEITEM hParent, HTREEITEM hInsertAfter );
// Refresh item ( redisplay the item according with the information contained by its lParam which is a CItemData* )
BOOL RefreshItem( HTREEITEM hItem );
// Query for the members of an item and add them to the tree
BOOL AddItemMembers(HTREEITEM hItem);
// Delete a subtree ( with or wihout its root )
BOOL DeleteItemSubtree(HTREEITEM hItem, BOOL bDeleteSubtreeRoot=TRUE);
// Delete all items of the tree
BOOL DeleteAllItems();
// Add the subtree current status ( items expanded and selected ) to the tree current status
void AddSubtreeSnapshot( HTREEITEM hSubtreeRoot, TREE_SNAPSHOT& snapshot );
// Expand and select items in a subtree given a pattern
BOOL RefreshSubtree( HTREEITEM hSubtreeRoot, TREE_SNAPSHOT& snapshot );
// Scan a subtree for:
// 1. Initializing stripe sets with parity that are not initializing anymore
// 2. Regenerating mirror sets or stripe sets with parity that are not regenerating anymore
// 3. Root volumes whose drive letter and volume name were eventually found
void ScanSubtreeOnTimer( HTREEITEM hSubtreeRoot, CObArray& arrRefreshedItems, CWordArray& arrRefreshFlags);
// Get all selected items in the given array ( array of CItemData ). Usually is only one item selected in a tree ctrl
void GetSelectedItems( CObArray& arrSelectedItems );
protected:
// The popup menu that appears when the user clicks the mouse right button is the first popup
// of the following menu
CMenu m_menuPopup;
// Generated message map functions
protected:
//{{AFX_MSG(CFTTreeView)
afx_msg void OnDestroy();
afx_msg void OnItemExpanding(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnItemExpand();
afx_msg void OnRclick(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnViewUp();
afx_msg void OnUpdateViewUp(CCmdUI* pCmdUI);
afx_msg void OnActionAssign();
afx_msg void OnUpdateActionAssign(CCmdUI* pCmdUI);
afx_msg void OnActionFtbreak();
afx_msg void OnUpdateActionFtbreak(CCmdUI* pCmdUI);
afx_msg void OnActionCreateExtendedPartition();
afx_msg void OnUpdateActionCreateExtendedPartition(CCmdUI* pCmdUI);
afx_msg void OnActionCreatePartition();
afx_msg void OnUpdateActionCreatePartition(CCmdUI* pCmdUI);
afx_msg void OnActionDelete();
afx_msg void OnUpdateActionDelete(CCmdUI* pCmdUI);
afx_msg void OnActionFtinit();
afx_msg void OnUpdateActionFtinit(CCmdUI* pCmdUI);
afx_msg void OnActionFtswap();
afx_msg void OnUpdateActionFtswap(CCmdUI* pCmdUI);
//}}AFX_MSG
// Status bar indicators handlers
afx_msg void OnUpdateIndicatorName(CCmdUI* pCmdUI);
afx_msg void OnUpdateIndicatorType(CCmdUI* pCmdUI);
afx_msg void OnUpdateIndicatorDisks(CCmdUI* pCmdUI);
afx_msg void OnUpdateIndicatorSize(CCmdUI* pCmdUI);
afx_msg void OnUpdateIndicatorNothing(CCmdUI* pCmdUI);
DECLARE_MESSAGE_MAP()
// MainFrame must have access to method OnCmdMsg which is still protected in MFC 4.2
friend class CMainFrame;
// Retrieves the set of disks whose volumes cannot be used as replacements for a
// certain volume in a logical volume set ( stripe, mirror, stripe with parity, volume set )
// The function uses the volume hierarchy of the ( left pane )tree view
friend void GetVolumeReplacementForbiddenDisksSet( CFTTreeView* pTreeView, CItemData* pVolumeData,
CULONGSet& setDisks );
};
#ifndef _DEBUG // debug version in FTTreeVw.cpp
inline CFTDocument* CFTTreeView::GetDocument()
{ return (CFTDocument*)m_pDocument; }
#endif
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_FTTREEVW_H__B83E0005_6873_11D2_A297_00A0C9063765__INCLUDED_)