//-----------------------------------------------------------------------
enum SPPropertyGridHitCode
{
SPGridHitError = -1 , // Indicates that the help splitter, verb splitter
// and verbs were not clicked.
SPGridHitHelpSplitter = 1 , // Indicates that the help splitter was clicked.
SPGridHitVerbsSplitter = 2 , // Indicates that the Verb splitter was clicked.
SPGridHitFirstVerb = 3 , // Determines if the item clicked upon is a verb.
};
//===========================================================================
// Summary:
// CSPPropertyGrid is a CWnd derived class. It is used to create a property grid
// control similar to the property window in VS.NET.
// See the "PropertyGrid" demo for an example of its usage.
//===========================================================================
class CSPPropertyGrid : public CWnd
{
DECLARE_DYNAMIC( CSPPropertyGrid )
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CSPPropertyGrid object
//-----------------------------------------------------------------------
CSPPropertyGrid();
//-----------------------------------------------------------------------
// Summary:
// Destroys a CSPPropertyGrid object, handles cleanup and deallocation
//-----------------------------------------------------------------------
virtual ~CSPPropertyGrid();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to create the Property Grid control.
// Parameters:
// rect - Size of the control.
// pParentWnd - Parent of the control.
// nID - Identifier of the Property Grid control.
// dwListStyle - List style of the items in the Property Grid.
// Remarks:
// Available styles are listed below:
//
// LBS_OWNERDRAWFIXED - The owner of the grid is
// responsible for drawing its contents; the items in the
// list box are the same height, should be used with
// LBS_NOINTEGRALHEIGHT.
//
LBS_OWNERDRAWVARIABLE - The owner of the grid is
// responsible for drawing its contents; the items
// in the grid are variable in height, should be used with
// LBS_NOINTEGRALHEIGHT
//
SP_PGS_OWNERDRAW - Apply this style to the property
// grid to use the owner draw feature. Catch SP_PGN_DRAWITEM
// to draw item. Recommended to use custom Paint Manager
// instead. (SetCustomTheme)
// Returns:
// TRUE if successful, otherwise returns FALSE.
// See Also: SetCustomTheme, SetTheme
//-----------------------------------------------------------------------
virtual BOOL Create( const RECT & rect , CWnd * pParentWnd , UINT nID , DWORD dwListStyle = LBS_OWNERDRAWFIXED | LBS_NOINTEGRALHEIGHT );
public:
//-----------------------------------------------------------------------
// Summary:
// Call this member function to add a new category to the Property Grid control.
// Parameters:
// strCaption - Name of the category to add.
// Parameters:
// nID - Identifier of new category.
// Returns:
// The pointer to the item object of the newly inserted category.
//-----------------------------------------------------------------------
CSPPropertyGridItem * AddCategory( CString strCaption );
CSPPropertyGridItem * AddCategory( int nID );//
//-----------------------------------------------------------------------
// Summary:
// Call this member function to insert a new category to the Property Grid control.
// Parameters:
// strCaption - Name of the category to add.
// Parameters:
// nID - Identifier of new category.
// nIndex - Index of category to be inserted
// Returns:
// The pointer to the item object of the newly inserted category.
//-----------------------------------------------------------------------
CSPPropertyGridItem * InsertCategory( int nIndex , CString strCaption );
CSPPropertyGridItem * InsertCategory( int nIndex , int nID );//
//-----------------------------------------------------------------------
// Summary:
// Call this member function to modify the way items are grouped.
// Parameters:
// sort - style of grouping. Can be any of the values listed in the Remarks section.
// Remarks:
// sort parameter can be one of the following:
// * SPGridSortCategorized Group items by category.
// * SPGridSortAlphabetical Sort items alphabetically.
// * SPGridSortNoSort Disable sorting.
// See Also: GetPropertySort
//-----------------------------------------------------------------------
void SetPropertySort( SPPropertyGridSortOrder sort );
//-----------------------------------------------------------------------
// Summary:
// Call this member function to get the current grouping style for
// the Property Grid control.
// Returns:
// An SPPropertyGridSortOrder value representing the current grouping style.
// See Also: SetPropertySort
//-----------------------------------------------------------------------
SPPropertyGridSortOrder GetPropertySort();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to show or hide the toolbar control
// in the Property Grid window.
// Parameters:
// bShow - TRUE to show the toolbar control, or FALSE to hide it.
//-----------------------------------------------------------------------
void ShowToolBar( BOOL bShow = TRUE );
//-----------------------------------------------------------------------
// Summary:
// Call this member function to show or hide the description pane
// in the Property Grid window.
// Parameters:
// bShow - TRUE to show the description pane, or FALSE to hide it.
//-----------------------------------------------------------------------
void ShowHelp( BOOL bShow = TRUE );
//-----------------------------------------------------------------------
// Summary:
// Call this member function to set the custom colors of the Property
// Grid control.
// Parameters:
// clrHelpBack - An RGB value that represents the background color
// the of description pane.
// clrHelpFore - An RGB value that represents the text color of
// the description pane.
// clrViewLine - An RGB value that represents the color of separating
// lines in control.
// clrViewBack - An RGB value that represents the background color
// of the Property Grid control.
// clrViewFore - An RGB value that represents the text color of
// the Property Grid control.
// clrCategoryFore - An RGB value that represents the text color of
// the Category item text.
//-----------------------------------------------------------------------
void SetCustomColors( COLORREF clrHelpBack , COLORREF clrHelpFore , COLORREF clrViewLine , COLORREF clrViewBack , COLORREF clrViewFore , COLORREF clrCategoryFore = ::GetSysColor( COLOR_GRAYTEXT ) );
//-----------------------------------------------------------------------
// Summary:
// Call this member function to set the default colors of the Property
// Grid control.
//-----------------------------------------------------------------------
void SetStandardColors();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to find an item.
// Parameters:
// strCaption - Caption for the item to find.
// nID - Identifier for the item to find.
// Returns:
// The pointer to the CSPPropertyGridItem object.
//-----------------------------------------------------------------------
CSPPropertyGridItem * FindItem( CString strCaption );
CSPPropertyGridItem * FindItem( UINT nID ); //
//-----------------------------------------------------------------------
// Summary:
// Removes all items from the list box of a property grid control.
//-----------------------------------------------------------------------
void ResetContent();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to determine if the help pane is visible.
// Returns:
// TRUE if the help pane is visible, otherwise returns FALSE.
//-----------------------------------------------------------------------
BOOL IsHelpVisible() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member function to determine if the toolbar is visible.
// Returns:
// TRUE if the toolbar is visible, otherwise returns FALSE.
//-----------------------------------------------------------------------
BOOL IsBarVisible() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member function to return the height of the help pane
// when it is visible.
// Returns:
// An integer value that represents the height in pixels.
//-----------------------------------------------------------------------
int GetHelpHeight() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member function to return the background color for
// the property grid.
// Returns:
// An RGB value.
//-----------------------------------------------------------------------
COLORREF GetHelpBackColor();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to return the foreground color for
// the property grid.
// Returns:
// An RGB value.
//-----------------------------------------------------------------------
COLORREF GetHelpForeColor();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to return the categories of the property
// grid.
// Returns:
// The pointer to the CSPPropertyGridItems object that represents
// collection of the categories.
//-----------------------------------------------------------------------
CSPPropertyGridItems * GetCategories();
//-----------------------------------------------------------------------
// Summary:
// Call this member to return a pointer to the collection of verbs that
// are displayed in the verb panel.
// Returns:
// The pointer to the CSPPropertyGridVerbs object that represents
// the collection of verbs.
//-----------------------------------------------------------------------
CSPPropertyGridVerbs * GetVerbs();
//-----------------------------------------------------------------------
// Summary:
// Call this method to retrieve reference to the view object.
// Returns:
// A CSPPropertyGridView object
//-----------------------------------------------------------------------
CSPPropertyGridView &GetGridView();
//-----------------------------------------------------------------------
// Summary:
// Call this method to retrieve reference to the toolbar for the
// property grid.
// Returns:
// A reference to a CToolBar object
//-----------------------------------------------------------------------
CToolBar &GetToolBar();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to get selected item.
// Returns:
// The pointer to the CSPPropertyGridItems object currently selected.
//-----------------------------------------------------------------------
CSPPropertyGridItem * GetSelectedItem();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to set the height of the help pane
// when visible.
// Parameters:
// nHeight - The integer value represents the height in pixels.
//-----------------------------------------------------------------------
void SetHelpHeight( int nHeight );
//-----------------------------------------------------------------------
// Summary:
// Call this member function to set the divider position of the grid view.
// Parameters:
// dDivider - A value between 0 and 1 that represents the location of the divider as
// a percentage from the left side of the view. For example, if you wanted
// the divider to divide at 25% you would pass in .25.
//-----------------------------------------------------------------------
void SetViewDivider( double dDivider );
//-----------------------------------------------------------------------
// Summary:
// This method sets the grid抯 current font to the specified font.
// Parameters:
// pFont - Pointer to a CFont object.
//-----------------------------------------------------------------------
void SetFont( CFont * pFont );
//-----------------------------------------------------------------------
// Summary:
// Call this member to set the grid theme.
// Parameters:
// paintTheme - theme of property grid. Can be one of the values
// listed in the Remarks section.
// Remarks:
// paintTheme can be one of the following values:
// * SPGridThemeDefault Enables default theme.
// * SPGridThemeNativeWinXP Enables WinXP style theme.
// * SPGridThemeOffice2003 Enables Office 2003 style theme.
// * SPGridThemeCool Enables Cool theme.
// * SPGridThemeSimple Enables Visual Basic style theme.
// * SPGridThemeDelphi Enables Delphi style theme.
// * SPGridThemeWhidbey Enables Visual Studio 2005 "Whidbey" style theme.
//-----------------------------------------------------------------------
void SetTheme( SPPropertyGridPaintTheme paintTheme );
//-----------------------------------------------------------------------
// Summary:
// Call this method to set custom theme of the grid.
// Parameters:
// pPaintManager - Points to a CSPPropertyGridPaintManager object
//-----------------------------------------------------------------------
void SetCustomTheme( CSPPropertyGridPaintManager * pPaintManager );
//-----------------------------------------------------------------------
// Summary:
// Retrieves current theme of the grid.
//-----------------------------------------------------------------------
SPPropertyGridPaintTheme GetCurrentTheme();
//-----------------------------------------------------------------------
// Summary:
// Call this method to refresh items in the list.
//-----------------------------------------------------------------------
void Refresh();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to "lock" the property grid. This
// should be called when adding or deleting a large number of item.
// Parameters:
// context - Pointer to a CSPPropertyGridUpdateContext object.
// Remarks:
// Each time you add a new item or category to the grid, The state
// of the grid is updated the grid is redrawn.
//
// If you want to delete all items in the grid and then add allot of
// new items it will be quite slow. To do this, you would call
// BeginUpdate, then delete all the items. The property grid will be
// locked until you call EndUpdate.
//
// It might be useful to call BeginWaitCursor to indicate that the
// grid is "busy" updating.
// See Also: EndUpdate, CSPPropertyGridUpdateContext
//-----------------------------------------------------------------------
void BeginUpdate( CSPPropertyGridUpdateContext & context );
//-----------------------------------------------------------------------
// Summary:
// This member should be called after BeginUpdate. You need to call
// EndUpdate to "unlock" the grid after you have finished adding
// and deleting a large amount of items.
// Parameters:
// context - Pointer to a CSPPropertyGridUpdateContext object.
// See Also: BeginUpdate, CSPPropertyGridUpdateContext
//-----------------------------------------------------------------------
void EndUpdate( CSPPropertyGridUpdateContext & context );
//-----------------------------------------------------------------------
// Summary:
// Call this member to determine if the verb panel is currently visible.
// Returns:
// TRUE if the verb panel is visible, FALSE otherwise.
// See Also: CSPPropertyGridVerb, CSPPropertyGridVerbs
//-----------------------------------------------------------------------
BOOL IsVerbsVisible();
//-----------------------------------------------------------------------
// Summary:
// Returns the currently used control's Paint Manager.
// Remarks:
// Call this member function to get the paint manager object used
// for drawing a property grid control window.
// Returns:
// Pointer to the paint manager object.
//-----------------------------------------------------------------------
CSPPropertyGridPaintManager * GetPaintManager();
//-----------------------------------------------------------------------
// Summary:
// Creates View of Property grid. Override this member to use custom view.
//-----------------------------------------------------------------------
virtual CSPPropertyGridView * CreateView();
//-----------------------------------------------------------------------
// Summary:
// This member is called when a user clicks on a verb or when a
// verb has focus and the enter key is pressed. Override this
// member to perform custom actions such as displaying a dialog.
// Parameters:
// nIndex - Index of the verb within the collection of verbs.
// pt - Point on the screen that the user clicked. This
// will the position of the mouse cursor over a verb. This
// point is stored in the CSPPropertyGridVerb::m_ptClick
// member which is a CPoint object. Coordinates will be
// relative to the screen and not the client.
//-----------------------------------------------------------------------
virtual void OnVerbClick( int nIndex , CPoint pt );
//-----------------------------------------------------------------------
// Summary:
// This member is called when items in the property grid are navigated
// using key on the keyboard. This includes navigating the built in
// toolbar, verbs, and items in the property grid.
// Parameters:
// nUIElement - Indicates which object should receive focus.
// Members of SPPropertyGridUI are used to indicate
// which object receives focus.
// bForward - TRUE if the Tab key is pressed and items are being
// navigated in the forward direction, FALSE if Shift+Tab
// is pressed and items are navigated backwards.
// TRUE if the Right or Down arrow is used to navigate the items.
// FALSE if the Up or Left arrow is used to navigate the items.
// pItem - Pointer to the currently selected item.
// See Also: SPPropertyGridUI
//-----------------------------------------------------------------------
virtual void OnNavigate( SPPropertyGridUI nUIElement , BOOL bForward , CSPPropertyGridItem * pItem );
//-----------------------------------------------------------------------
// Summary:
// Call this method to enable navigate items using Tab key.
// Parameters:
// bTabItems - TRUE to navigate items in the grid using the tab key.
// When TRUE, focus will move in this order:
// Caption, Item Value, Item InPlaceButton (if used), Next item Caption
// FALSE not to navigate the items in the grid with the tab key.
//-----------------------------------------------------------------------
void NavigateItems( BOOL bTabItems );
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify the height of the verb box when visible.
// Parameters:
// nHeight - Height of the verb box.
// See Also: CSPPropertyGridVerb, CSPPropertyGridVerbs, IsVerbsVisible
//-----------------------------------------------------------------------
void SetVerbsHeight( int nHeight );
protected:
//-----------------------------------------------------------------------
// Summary:
// This method is called by the framework during resizing of splitters.
// Parameters:
// rc - Specifies the reference to a CRect object specifying
// the tracking rectangle.
//-----------------------------------------------------------------------
void OnInvertTracker( CRect rc );
//-----------------------------------------------------------------------
// Summary:
// This member is called to determine if the help splitter,
// verb splitter, or a verb was clicked upon.
// Parameters:
// pt - A point to test.
// Returns:
// The HitTest method returns the following values which specify which
// part of the property grid located under the coordinates specified
// by pt.
//
// * SPGridHitError Indicates something else was clicked.
// * SPGridHitHelpSplitter Indicates the help splitter was clicked.
// * SPGridHitVerbsSplitter Indicates the verb splitter was clicked.
// * SPGridHitFirstVerb If the return value is greater than or
// equal to SPGridHitFirstVerb then the item clicked upon is
// a verb. You can retrieve the verb index by subtracting
// SPGridHitFirstVerb from the return value, for example:
//
// int iHit = m_wndPropertyGrid.HitTest(pt);
// if (iHit >= SPGridHitFirstVerb)
// {
// // Get the index of the verb.
// m_iVerbIndex = (iHit-SPGridHitFirstVerb);
// }
//
// See Also:
// SPPropertyGridHitCode
//-----------------------------------------------------------------------
virtual int HitTest( CPoint pt );
//-----------------------------------------------------------------------
// Summary:
// This member is called when a new item is selected in the
// grid. Or focus switched from one item to a different item.
// Parameters:
// pItem - Item that the selection has changed too. This is the
// item that just received focus.
// See Also: GetSelectedItem
//-----------------------------------------------------------------------
virtual void OnSelectionChanged( CSPPropertyGridItem * pItem );
//-------------------------------------------------------------------------
// Summary:
// This member is called when the sort order has changed.
// See Also: SetPropertySort
//-------------------------------------------------------------------------
virtual void OnSortChanged();
//-----------------------------------------------------------------------
// Summary:
// This member is called to recalculate the position and size of the
// property grid, then it resizes the grid to the specified size.
// New size is 0,0,cx,cy.
// This is the area that hold the toolbar and grid, this does not
// include the area for the verb and help panel.
// Parameters:
// cx - New bottom-right x coordinate of the grid's bounding rectangle.
// cy - New bottom-right y coordinate of the grid's bounding rectangle.
//-----------------------------------------------------------------------
virtual void Reposition( int cx , int cy );
//-------------------------------------------------------------------------
// Summary:
// This member is called when the "built-in" toolbar is created.
//-------------------------------------------------------------------------
void CreateToolbar();
//-------------------------------------------------------------------------
// Summary:
// This member is called when the toolbar buttons need to be redrawn.
// Remarks:
// This occurs when the sort order has changed, and when the toolbar
// is shown. Sort order can be changed by code or by clicking on
// a button in the toolbar.
//-------------------------------------------------------------------------
void RefreshToolBarButtons();
//-------------------------------------------------------------------------
// Summary:
// This member is called when a Verb receives focus, and when focus
// switches from one verb to a different verb.
//-------------------------------------------------------------------------
void OnVerbsChanged();
private:
CWnd * GetNextGridTabItem( BOOL bForward );
void RestoreExpandingState( CSPPropertyGridItems * pItems , CMap< UINT, UINT, BOOL, BOOL& > * pState );
void SaveExpandingState( CSPPropertyGridItems * pItems , CMap< UINT, UINT, BOOL, BOOL& > * pState , UINT & nSelected );
public:
int m_nHelpHeight; // Height of the description area (help panel).
int m_nVerbsHeight; // Height of the verbs panel.
CSPPaintManagerColor m_clrHelpBack; // Color of the description background.
CSPPaintManagerColor m_clrHelpFore; // Color of the description text.
protected:
BOOL m_bHelpVisible; // TRUE if the help panel is visible.
BOOL m_bToolBarVisible; // TRUE if the built in toolbar is visible.
CSPPropertyGridToolBar m_wndToolbar; // Pointer to the "built-in" PropertyGrid toolbar.
HCURSOR m_hCursorSplit; // Handle to the cursor when positioned over a splitter.
HCURSOR m_hCursorHand; // Handle of the cursor.
BOOL m_bTabItems; // TRUE to navigate items with the tab key.
CSPPropertyGridVerbs * m_pVerbs; // Collection of verbs (links) displayed in the verb panel when the panel is visible.
BOOL m_bVerbsVisible; // TRUE if the verb panel is visible.
SPPropertyGridPaintTheme m_themeCurrent; // Currently set theme.
CSPPropertyGridPaintManager * m_pPaintManager; // Current paint manager.
int m_nFocusedVerb; // Index of the currently focused verb within the collection of verbs.
private:
CRect m_rectTracker;
CSPPropertyGridView * m_pView;
BOOL m_bVerbActivate;
protected:
//{{AFX_CODEJOCK_PRIVATE
//{{AFX_MSG(CSPPropertyGrid)
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnPaint();
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg void OnKillFocus(CWnd* pNewWnd);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnSortAlphabetic();
afx_msg void OnSortCategorized();
afx_msg void OnSysColorChange();
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg UINT OnGetDlgCode();
//}}AFX_MSG
private:
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
DECLARE_MESSAGE_MAP()
friend class CSPPropertyGridView;
friend class CPropertyGridCtrl;
friend class CSPPropertyGridVerb;
friend class CSPPropertyGridVerbs;
//}}AFX_CODEJOCK_PRIVATE
};
//////////////////////////////////////////////////////////////////////
AFX_INLINE BOOL CSPPropertyGridUpdateContext::IsEmpty()
{
return m_mapState.IsEmpty();
}
AFX_INLINE CString CSPPropertyGridVerb::GetCaption()
{
return m_strCaption;
}
AFX_INLINE int CSPPropertyGridVerb::GetID()
{
return m_nID;
}
AFX_INLINE int CSPPropertyGridVerb::GetIndex()
{
return m_nIndex;
}
AFX_INLINE void CSPPropertyGridVerb::SetPart( CRect rc )
{
m_rcPart = rc;
}
AFX_INLINE CRect CSPPropertyGridVerb::GetPart()
{
return m_rcPart;
}
AFX_INLINE CPoint CSPPropertyGridVerb::GetClickPoint()
{
return m_ptClick;
}
AFX_INLINE BOOL CSPPropertyGridVerb::IsFocused()
{
return ( m_nIndex == m_pVerbs->m_pGrid->m_nFocusedVerb ) && ( ::GetFocus() == m_pVerbs->m_pGrid->GetSafeHwnd() );
}
AFX_INLINE CSPPropertyGridVerb * CSPPropertyGridVerbs::GetAt( int nIndex )
{
return m_arrVerbs.GetAt( nIndex );
}
AFX_INLINE BOOL CSPPropertyGridVerbs::IsEmpty()
{
return m_arrVerbs.GetSize() == 0;
}
AFX_INLINE CSPPropertyGridItem * CSPPropertyGrid::FindItem( CString strCaption )
{
return GetGridView().m_pCategories->FindItem( strCaption );
}
AFX_INLINE CSPPropertyGridItem * CSPPropertyGrid::FindItem( UINT nID )
{
return GetGridView().m_pCategories->FindItem( nID );
}
AFX_INLINE CSPPropertyGridItem * CSPPropertyGrid::AddCategory( CString strCaption )
{
return GetGridView().AddCategory( strCaption );
}
AFX_INLINE CSPPropertyGridItem * CSPPropertyGrid::InsertCategory( int nIndex , CString strCaption )
{
return GetGridView().InsertCategory( nIndex,strCaption );
}
AFX_INLINE void CSPPropertyGrid::SetPropertySort( SPPropertyGridSortOrder sort )
{
GetGridView().SetPropertySort( sort );
}
AFX_INLINE SPPropertyGridSortOrder CSPPropertyGrid::GetPropertySort()
{
return GetGridView().m_properetySort;
}
AFX_INLINE BOOL CSPPropertyGrid::IsHelpVisible() const
{
return m_bHelpVisible;
}
AFX_INLINE BOOL CSPPropertyGrid::IsBarVisible() const
{
return m_bToolBarVisible;
}
AFX_INLINE int CSPPropertyGrid::GetHelpHeight() const
{
return m_nHelpHeight;
}
AFX_INLINE COLORREF CSPPropertyGrid::GetHelpBackColor()
{
return m_clrHelpBack;
}
AFX_INLINE COLORREF CSPPropertyGrid::GetHelpForeColor()
{
return m_clrHelpFore;
}
AFX_INLINE CToolBar & CSPPropertyGrid::GetToolBar()
{
return m_wndToolbar;
}
AFX_INLINE SPPropertyGridPaintTheme CSPPropertyGrid::GetCurrentTheme()
{
return m_themeCurrent;
}
AFX_INLINE CSPPropertyGridVerbs * CSPPropertyGrid::GetVerbs()
{
return m_pVerbs;
}
AFX_INLINE BOOL CSPPropertyGrid::IsVerbsVisible()
{
return !m_pVerbs->IsEmpty();
}
AFX_INLINE CSPPropertyGridPaintManager * CSPPropertyGrid::GetPaintManager()
{
return m_pPaintManager;
}
AFX_INLINE BOOL CSPPropertyGrid::Create( LPCTSTR lpszClassName , LPCTSTR lpszWindowName , DWORD dwStyle , const RECT & rect , CWnd * pParentWnd , UINT nID , CCreateContext * pContext )
{
return CWnd::Create( lpszClassName,lpszWindowName,dwStyle,rect,pParentWnd,nID,pContext );
}
AFX_INLINE void CSPPropertyGrid::NavigateItems( BOOL bTabItems )
{
m_bTabItems = bTabItems;
}
#endif // #if !defined(__SPPROPERTYGRID_H__)