//-----------------------------------------------------------------------
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 grids 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* pState);
void SaveExpandingState(CSPPropertyGridItems* pItems, CMap* 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__)