You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
789 lines
32 KiB
C++
789 lines
32 KiB
C++
// XTPListBase.h interface for the CXTPListCtrl class.
|
|
//
|
|
// This file is a part of the XTREME CONTROLS MFC class library.
|
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
|
//
|
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
|
// CONSENT OF CODEJOCK SOFTWARE.
|
|
//
|
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
|
// SINGLE COMPUTER.
|
|
//
|
|
// CONTACT INFORMATION:
|
|
// support@codejock.com
|
|
// http://www.codejock.com
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
#if !defined(__XTPLISTBASE_H__)
|
|
#define __XTPLISTBASE_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// CXTPListBase is a non-inherited class. It implements the extended
|
|
// list control services provided by the Xtreme Toolkit list control classes.
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPListBase
|
|
{
|
|
public:
|
|
// --------------------------------------------------------------------
|
|
// Summary:
|
|
// ROWCOLOR structure is used by the CXTPListBase class to
|
|
// store user defined background and text color settings for a
|
|
// particular row in a list control.
|
|
// See Also:
|
|
// CRowColorList, SetRowColor, RemoveRowColors, Lookup
|
|
// --------------------------------------------------------------------
|
|
struct ROWCOLOR
|
|
{
|
|
int iRow; // List control row index.
|
|
COLORREF crBack; // RGB value for text background color.
|
|
COLORREF crText; // RGB value for text foreground color.
|
|
LPARAM lParam; // User defined data.
|
|
};
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// List for maintaining ROWCOLOR structures.
|
|
// Remarks:
|
|
// CList definition used by the CXTPListBase class to maintain
|
|
// a list of ROWCOLOR structures representing each row that has
|
|
// a user defined color setting for the list control.
|
|
// See Also:
|
|
// CXTPListBase, CXTPListBase::SetRowColor, RemoveRowColors, Lookup, ROWCOLOR
|
|
// ----------------------------------------------------------------------
|
|
typedef CList<ROWCOLOR, ROWCOLOR&> CRowColorList;
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPListBase object
|
|
//-----------------------------------------------------------------------
|
|
CXTPListBase();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPListBase object, handles cleanup and deallocation
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPListBase();
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get a pointer to the flat header control.
|
|
// Returns:
|
|
// A pointer to a CXTPHeaderCtrl if subclassed, otherwise returns NULL.
|
|
//-----------------------------------------------------------------------
|
|
CXTPHeaderCtrl* XTPGetHeaderCtrl() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function will set the sort image for the specified column.
|
|
// Parameters:
|
|
// nCol - Zero-based index of the column to set the sort image for.
|
|
// bAsc - TRUE if ascending, otherwise FALSE.
|
|
// Returns:
|
|
// The zero-based index of the previously sorted column.
|
|
//-----------------------------------------------------------------------
|
|
virtual int SetSortImage(int nCol, BOOL bAsc);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function will return the column width stored in the
|
|
// registry.
|
|
// Parameters:
|
|
// nCol - Zero-based index of the column.
|
|
// Returns:
|
|
// The column width stored in the registry.
|
|
//-----------------------------------------------------------------------
|
|
virtual int GetStoredWidth(int nCol);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function will set the column width from the registry
|
|
// settings.
|
|
// Parameters:
|
|
// nCol - Zero-based index of the column.
|
|
//-----------------------------------------------------------------------
|
|
virtual void SetStoredWidth(int nCol);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function loads the column widths from the registry.
|
|
//-----------------------------------------------------------------------
|
|
virtual void LoadColumnWidths();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function saves the column widths to the registry.
|
|
//-----------------------------------------------------------------------
|
|
virtual void SaveColumnWidths();
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// Automatically sizes a specified column.
|
|
// Parameters:
|
|
// nCol - Zero\-based index of the column.
|
|
// Remarks:
|
|
// This member function will automatically size a given column. Pass
|
|
// in a -1 to auto-fit all columns.
|
|
// ---------------------------------------------------------------------
|
|
virtual void AutoSizeColumn(int nCol = -1);
|
|
|
|
// -------------------------------------------------------------------
|
|
// Summary:
|
|
// Initializes the auto save feature.
|
|
// Parameters:
|
|
// lpszSection - Registry section name. If NULL, the default is
|
|
// "Settings".
|
|
// lpszEntry - Registry entry name. If NULL, the default is "Column
|
|
// Info".
|
|
// lpszDefault - Registry default value. If NULL, the default ID.
|
|
// Remarks:
|
|
// This member function will initialize the auto save feature. If
|
|
// called, column widths will be saved to the system registry when
|
|
// the list control window is destroyed.
|
|
// -------------------------------------------------------------------
|
|
virtual void AutoSaveColumns(LPCTSTR lpszSection = NULL, LPCTSTR lpszEntry = NULL, LPCTSTR lpszDefault = NULL);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to subclass the flat header control.
|
|
// Parameters:
|
|
// bBoldFont - true to use a bold font in the header control.
|
|
//-----------------------------------------------------------------------
|
|
virtual bool SubclassHeader(bool bBoldFont = false);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Override this member function in your derived class to perform custom
|
|
// sort routines.
|
|
// Parameters:
|
|
// nCol - Passed in from the control. Index of the column clicked.
|
|
// bAscending - Passed in from the control. true if sort order should
|
|
// be ascending.
|
|
//-----------------------------------------------------------------------
|
|
virtual bool SortList(int nCol, bool bAscending);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to set extended styles for the list
|
|
// control, ie: LVS_EX_FULLROWSELECT, LVS_EX_GRIDLINES, etc. See MSDN
|
|
// documentation for a complete list of available styles.
|
|
// Parameters:
|
|
// dwExStyle - DWORD value that specifies the extended list-view control style. This
|
|
// parameter can be a combination of Extended List-View Styles.
|
|
//-----------------------------------------------------------------------
|
|
virtual void SetExtendedStyle(DWORD dwExStyle);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called to return the list control extended
|
|
// style.
|
|
// Returns:
|
|
// A DWORD value that represents the extended style of the list control.
|
|
//-----------------------------------------------------------------------
|
|
virtual DWORD GetExtendedStyle();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to enable or disable column sizing.
|
|
// Parameters:
|
|
// bDisable - true to disable column sizing. false to enable.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DisableColumnSizing(bool bDisable);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set a minimum column size.
|
|
// Parameters:
|
|
// nSize - Size in pixels of the column's minimum size.
|
|
//-----------------------------------------------------------------------
|
|
void SetMinimumColSize(int nSize);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the minimum column size for the list
|
|
// control.
|
|
// Returns:
|
|
// An integer value that represents the minimum column size for the list control.
|
|
//-----------------------------------------------------------------------
|
|
int GetMinimumColSize();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the maximum column size for the list control.
|
|
// Returns:
|
|
// An integer value that represents the maximum column size for the list control.
|
|
//-----------------------------------------------------------------------
|
|
int GetMaximumColSize();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to determine the row index and column
|
|
// index for a 'point'.
|
|
// Parameters:
|
|
// point - Point to be tested.
|
|
// col - Address of the column index
|
|
// Returns:
|
|
// The row index, or -1 if 'point' is not over a row.
|
|
//-----------------------------------------------------------------------
|
|
virtual int HitTestEx(CPoint &point, int* col) const;
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to add a column after the right most
|
|
// column.
|
|
// Parameters:
|
|
// lpszColHeading - The column's heading.
|
|
// nWidth - Width of the column in pixels. If this parameter is \-1,
|
|
// the column width is the same as the previous column.
|
|
// nFormat - The alignment of the column. It can be LVCFMT_LEFT,
|
|
// LVCFMT_RIGHT, or LVCFMT_CENTER.
|
|
// Returns:
|
|
// The index of the new column if successful, or -1 if unsuccessful.
|
|
// --------------------------------------------------------------------------
|
|
virtual int AddColumn(LPCTSTR lpszColHeading, int nWidth = -1, int nFormat = LVCFMT_LEFT);
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function will build the columns for the list control.
|
|
// Parameters:
|
|
// nCols - [in] Number of columns contained in the list control.
|
|
// nWidth - [in] 'int' array containing the column widths.
|
|
// strColString - [in] CString array containing the string for each
|
|
// column.
|
|
// nColString - [in] 'int' array containing the string resource ID for each
|
|
// column.
|
|
// Remarks:
|
|
// Call this member function to automatically generate the columns
|
|
// for the list control. This is done by passing in an array of
|
|
// column indexes specified by <i>nCols</i>, an array of column
|
|
// widths specified by <i>nWidth</i> and and array of column labels
|
|
// specified by <i>nColString</i> or <i>strColString</i>.
|
|
// Example:
|
|
// The following example demonstrates the use of BuildColumns.
|
|
// <code>
|
|
// static int arColWidths[] = {
|
|
// 24,
|
|
// 21,
|
|
// 100,
|
|
// 180,
|
|
// 120
|
|
// };
|
|
//
|
|
// static CString arColLabels[] = {
|
|
// _T(" "),
|
|
// _T(" "),
|
|
// _T("From"),
|
|
// _T("Subject"),
|
|
// _T("Received")
|
|
// };
|
|
//
|
|
// // Insert the columns.
|
|
// BuildColumns(_countof(arColWidths), arColWidths, arColLabels);
|
|
// </code>
|
|
// Returns:
|
|
// true if successful, or false if an error occurred.
|
|
// ---------------------------------------------------------------------------
|
|
virtual bool BuildColumns(int nCols, int* nWidth, int* nColString);
|
|
virtual bool BuildColumns(int nCols, int* nWidth, CString* strColString); //<combine CXTPListBase::BuildColumns@int@int*@int*>
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function gets the number of columns in the list.
|
|
// Returns:
|
|
// An integer value that represents the number of columns in the list.
|
|
//-----------------------------------------------------------------------
|
|
virtual int GetColumnCount();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function copies a row to a new location.
|
|
// Parameters:
|
|
// nFrom - Index of the source row.
|
|
// nTo - Index of the destination row.
|
|
// Returns:
|
|
// The index of the source row specified by 'nFrom'.
|
|
//-----------------------------------------------------------------------
|
|
virtual int CopyRow(int nFrom, int nTo);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function moves a row to a new location.
|
|
// Parameters:
|
|
// nFrom - Index of the source row
|
|
// nTo - Index of the destination row
|
|
// Returns:
|
|
// true if successful, or false if an error occurred.
|
|
//-----------------------------------------------------------------------
|
|
virtual bool MoveRow(int nFrom, int nTo);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is a utility function to retrieve the associated
|
|
// header control.
|
|
// Returns:
|
|
// A CHeaderCtrl pointer to the associated header control.
|
|
//-----------------------------------------------------------------------
|
|
CHeaderCtrl *_xtGetHeaderCtrl() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the row, text, and background colors for
|
|
// the list control.
|
|
// Parameters:
|
|
// clrText - RGB value representing the row text color.
|
|
// clrTextBk - RGB value representing the row background color.
|
|
// Remarks:
|
|
// The iIndex version sets the text, and background colors for
|
|
// the specified row in the list control.
|
|
//-----------------------------------------------------------------------
|
|
void SetRowColors(COLORREF clrText, COLORREF clrTextBk);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the text, and background colors for
|
|
// the specified row in the list control.
|
|
// Parameters:
|
|
// lpRowColor - Points to a ROWCOLOR that contains the RGB row
|
|
// color information.
|
|
// bRedraw - TRUE to invalidate control.
|
|
//-----------------------------------------------------------------------
|
|
void SetRowColor(ROWCOLOR* lpRowColor, BOOL bRedraw = TRUE);
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the text, and background colors for the
|
|
// specified row in the list control.
|
|
// Parameters:
|
|
// bRedraw : TRUE to invalidate control.
|
|
// iRow : Index of the row to set color for.
|
|
// crText : RGB value representing the row text color.
|
|
// crBack : RGB value representing the row background color.
|
|
//
|
|
// ---------------------------------------------------------------------
|
|
void SetRowColor(int iRow, COLORREF crText, COLORREF crBack, BOOL bRedraw = TRUE);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to remove all user defined row colors
|
|
// from the list control.
|
|
//-----------------------------------------------------------------------
|
|
void RemoveRowColors();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to determine if the specified row
|
|
// contains user defined color attributes.
|
|
// Parameters:
|
|
// iRow - Index of the row to check.
|
|
// Returns:
|
|
// A pointer to a ROWCOLOR structure if successful, otherwise
|
|
// NULL.
|
|
//-----------------------------------------------------------------------
|
|
virtual ROWCOLOR* Lookup(int iRow);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to modify the extended style for the
|
|
// list control.
|
|
// Parameters:
|
|
// dwRemove - Specifies window styles to be removed during style
|
|
// modification.
|
|
// dwAdd - Specifies window styles to be added during style
|
|
// modification.
|
|
// Returns:
|
|
// TRUE if successful, otherwise FALSE.
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL ModifyExtendedStyle(DWORD dwRemove, DWORD dwAdd);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to return the RGB color value used
|
|
// for the column background color.
|
|
// Returns:
|
|
// Returns an RGB value representing the column background color.
|
|
//-----------------------------------------------------------------------
|
|
COLORREF GetListBackColor() const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the RGB color value used for the
|
|
// list background color.
|
|
// Parameters:
|
|
// crListBack : An RGB value representing the list background color.
|
|
// ----------------------------------------------------------------------
|
|
void SetListBackColor(COLORREF crListBack);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to return the RGB color value used
|
|
// for the column text color.
|
|
// Returns:
|
|
// Returns an RGB value representing the column text color.
|
|
//-----------------------------------------------------------------------
|
|
COLORREF GetListTextColor() const;
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the RGB color value used for the
|
|
// list text color.
|
|
// Parameters:
|
|
// crListText : An RGB value representing the list text color.
|
|
// ---------------------------------------------------------------------
|
|
void SetListTextColor(COLORREF crListText);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to return the RGB color value used
|
|
// for the sorted column background color.
|
|
// Returns:
|
|
// Returns an RGB value representing the sorted column background color.
|
|
//-----------------------------------------------------------------------
|
|
COLORREF GetSortBackColor() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the RGB color value used
|
|
// for the sorted column background color.
|
|
// Parameters:
|
|
// crSortBack - An RGB value representing the sorted column background color.
|
|
//-----------------------------------------------------------------------
|
|
void SetSortBackColor(COLORREF crSortBack);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to return the RGB color value used
|
|
// for the sorted column text color.
|
|
// Returns:
|
|
// Returns an RGB value representing the sorted column text color.
|
|
//-----------------------------------------------------------------------
|
|
COLORREF GetSortTextColor() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the RGB color value used
|
|
// for the sorted column text color.
|
|
// Parameters:
|
|
// crSortText - An RGB value representing the sorted column text color.
|
|
//-----------------------------------------------------------------------
|
|
void SetSortTextColor(COLORREF crSortText);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to enable or disable sorted column
|
|
// colors.
|
|
// Parameters:
|
|
// bEnable - true to enable sorted column colors, false to disable.
|
|
//-----------------------------------------------------------------------
|
|
void EnableUserSortColor(bool bEnable);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to determine if sorted column color
|
|
// is enabled.
|
|
// Returns:
|
|
// true if sorted column colors are enabled, otherwise false.
|
|
//-----------------------------------------------------------------------
|
|
bool IsUserSortColor() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to enable or disable user defined
|
|
// colors.
|
|
// Parameters:
|
|
// bEnable - true to enable user defined colors, false to disable.
|
|
//-----------------------------------------------------------------------
|
|
void EnableUserListColor(bool bEnable);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to determine if user defined colors
|
|
// are enabled.
|
|
// Returns:
|
|
// true if user defined colors are enabled, otherwise false.
|
|
//-----------------------------------------------------------------------
|
|
bool IsUserListColor() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to enable or disable user defined row
|
|
// colors.
|
|
// Parameters:
|
|
// bEnable - true to enable user defined row colors, false to disable.
|
|
//-----------------------------------------------------------------------
|
|
void EnableUserRowColor(bool bEnable);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to determine if user defined row colors
|
|
// are enabled.
|
|
// Returns:
|
|
// true if user defined row colors are enabled, otherwise false.
|
|
//-----------------------------------------------------------------------
|
|
bool IsUserRowColor() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to automatically set the font for
|
|
// the list control when the control is initialized to use the
|
|
// toolkit default font. This will also reset the font for the
|
|
// header control as well.
|
|
// Parameters:
|
|
// bAutoFont - true to enable auto font, otherwise false.
|
|
//-----------------------------------------------------------------------
|
|
void SetAutoFont(bool bAutoFont);
|
|
|
|
protected:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called by the CXTPListBase class to
|
|
// perform initialization when the window is created or sub-classed.
|
|
// Returns:
|
|
// TRUE if the window was successfully initialized, otherwise FALSE.
|
|
//-----------------------------------------------------------------------
|
|
virtual bool Init();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Sets the list control pointer.
|
|
// Parameters:
|
|
// pListCtrl - Points to the CListCtrl object to attach.
|
|
// Remarks:
|
|
// This member function is called by the derived class to
|
|
// set the list control pointer for this implementation.
|
|
//-----------------------------------------------------------------------
|
|
void ImplAttach(CListCtrl* pListCtrl);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Called from the derived class OnNotify method.
|
|
// Parameters:
|
|
// wParam - Identifies the control that sends the message if the
|
|
// message is from a control. Otherwise, wParam is 0.
|
|
// lParam - Pointer to a notification message (NMHDR) structure
|
|
// that contains the notification code and additional
|
|
// information. For some notification messages, this
|
|
// parameter points to a larger structure that has the
|
|
// NMHDR structure as its first member.
|
|
// pResult - Pointer to an LRESULT variable in which to store the
|
|
// result code if the message is handled.
|
|
// Remarks:
|
|
// The derived calls this member function
|
|
// to processes the message map for control notification, the
|
|
// derived class should call this member function from
|
|
// the CWnd::OnNotify override.
|
|
// Returns:
|
|
// An application returns nonzero if it processes this message; otherwise
|
|
// 0.
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Updates colors and size values.
|
|
// Remarks:
|
|
// This member function is called whenever there is a need to
|
|
// refresh the colors and size values that are set using system
|
|
// values. Usually called when the operating system color or
|
|
// settings change.
|
|
//-------------------------------------------------------------------------
|
|
void RefreshMetrics();
|
|
|
|
protected:
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
//{{AFX_MSG
|
|
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
|
|
afx_msg void OnDestroy();
|
|
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
|
afx_msg void OnPaint();
|
|
afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM lParam);
|
|
afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
|
|
//}}AFX_MSG
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
|
|
protected:
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
// Needed in order to access protected functions.
|
|
class CListCtrl_Friendly : public CListCtrl { friend class CXTPListBase; };
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
int m_nMinColWidth; // Minimum width for columns.
|
|
int m_nMaxColWidth; // Maximum width for columns.
|
|
int m_nSortedCol; // Index of the currently selected column.
|
|
bool m_bAutoFont; // If true, the font will automatically be set for the control
|
|
bool m_bAutoSave; // true if saving the column widths.
|
|
bool m_bListColor; // true if user defined colors are used for background and text.
|
|
bool m_bRowColor; // true if rows are drawn with user defined colors.
|
|
bool m_bSortColor; // true if the sorted column is drawn in color.
|
|
bool m_bAscending; // Flag to determine the sorting order.
|
|
bool m_bNoColSizing; // If true, column sizing is disabled.
|
|
CString m_strSection; // Registry section name.
|
|
CString m_strEntry; // Registry entry name.
|
|
CString m_strDefault; // Registry default value.
|
|
COLORREF m_crListText; // RGB value representing the row text color.
|
|
COLORREF m_crListBack; // RGB value representing the row text background color.
|
|
COLORREF m_crSortText; // RGB value for sort column text color.
|
|
COLORREF m_crSortBack; // RGB value for sort column background color.
|
|
CRowColorList m_arRowColor; // List of user defined text and background row colors.
|
|
CXTPHeaderCtrl m_wndHeader; // Subclassed flat header control.
|
|
CListCtrl_Friendly* m_pListCtrl; // List control instance.
|
|
};
|
|
|
|
//===========================================================================
|
|
|
|
AFX_INLINE DWORD CXTPListBase::GetExtendedStyle() {
|
|
ASSERT(::IsWindow(m_pListCtrl->GetSafeHwnd())); return (DWORD)m_pListCtrl->SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
|
|
}
|
|
AFX_INLINE void CXTPListBase::SetExtendedStyle(DWORD dwExStyle) {
|
|
ASSERT(::IsWindow(m_pListCtrl->GetSafeHwnd())); m_pListCtrl->SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, GetExtendedStyle() | dwExStyle);
|
|
}
|
|
AFX_INLINE void CXTPListBase::SetMinimumColSize(int nSize) {
|
|
m_nMinColWidth = nSize; XTPGetHeaderCtrl()->SetMinSize(nSize);
|
|
}
|
|
AFX_INLINE int CXTPListBase::GetMinimumColSize() {
|
|
return m_nMinColWidth;
|
|
}
|
|
AFX_INLINE int CXTPListBase::GetMaximumColSize() {
|
|
return m_nMaxColWidth;
|
|
}
|
|
AFX_INLINE void CXTPListBase::DisableColumnSizing(bool bDisable) {
|
|
m_bNoColSizing = bDisable;
|
|
}
|
|
AFX_INLINE void CXTPListBase::SetListBackColor(COLORREF crListBack) {
|
|
m_crListBack = crListBack;
|
|
}
|
|
AFX_INLINE void CXTPListBase::SetListTextColor(COLORREF crListText) {
|
|
m_crListText = crListText;
|
|
}
|
|
AFX_INLINE void CXTPListBase::EnableUserListColor(bool bEnable) {
|
|
m_bListColor = bEnable;
|
|
}
|
|
AFX_INLINE void CXTPListBase::SetRowColors(COLORREF clrText, COLORREF clrTextBk) {
|
|
SetListTextColor(clrText); SetListBackColor(clrTextBk); EnableUserListColor(true); m_pListCtrl->RedrawWindow();
|
|
}
|
|
AFX_INLINE COLORREF CXTPListBase::GetListBackColor() const {
|
|
return m_bListColor ? ((m_crListBack == (COLORREF)-1) ? ::GetSysColor(COLOR_WINDOW) : m_crListBack) : ::GetSysColor(COLOR_WINDOW);
|
|
}
|
|
AFX_INLINE COLORREF CXTPListBase::GetListTextColor() const {
|
|
return m_bListColor ? ((m_crListText == (COLORREF)-1) ? ::GetSysColor(COLOR_WINDOWTEXT) : m_crListText) : ::GetSysColor(COLOR_WINDOWTEXT);
|
|
}
|
|
AFX_INLINE COLORREF CXTPListBase::GetSortBackColor() const {
|
|
return (m_crSortBack == (COLORREF)-1) ? GetListBackColor() : m_crSortBack;
|
|
}
|
|
AFX_INLINE void CXTPListBase::SetSortBackColor(COLORREF crSortBack) {
|
|
m_crSortBack = crSortBack;
|
|
}
|
|
AFX_INLINE COLORREF CXTPListBase::GetSortTextColor() const {
|
|
return (m_crSortText == (COLORREF)-1) ? GetListTextColor():m_crSortText;
|
|
}
|
|
AFX_INLINE void CXTPListBase::SetSortTextColor(COLORREF crSortText) {
|
|
m_crSortText = crSortText;
|
|
}
|
|
AFX_INLINE void CXTPListBase::EnableUserSortColor(bool bEnable) {
|
|
m_bSortColor = bEnable;
|
|
}
|
|
AFX_INLINE bool CXTPListBase::IsUserSortColor() const {
|
|
return m_bSortColor;
|
|
}
|
|
AFX_INLINE bool CXTPListBase::IsUserListColor() const {
|
|
return m_bListColor;
|
|
}
|
|
AFX_INLINE void CXTPListBase::EnableUserRowColor(bool bEnable) {
|
|
m_bRowColor = bEnable;
|
|
}
|
|
AFX_INLINE bool CXTPListBase::IsUserRowColor() const {
|
|
return m_bRowColor;
|
|
}
|
|
AFX_INLINE void CXTPListBase::SetAutoFont(bool bAutoFont) {
|
|
m_bAutoFont = bAutoFont;
|
|
}
|
|
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
#define DECLATE_LIST_BASE(ClassName, List, Base)\
|
|
class _XTP_EXT_CLASS ClassName : public List, public Base\
|
|
{\
|
|
public:\
|
|
ClassName() {\
|
|
m_bPreSubclassInit = true;\
|
|
} \
|
|
virtual DWORD GetExtendedStyle() {\
|
|
return Base::GetExtendedStyle();\
|
|
} \
|
|
virtual void SetExtendedStyle(DWORD dwExStyle){\
|
|
Base::SetExtendedStyle(dwExStyle);\
|
|
} \
|
|
protected:\
|
|
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) {\
|
|
return Base::OnNotify(wParam, lParam, pResult);\
|
|
} \
|
|
virtual bool Init() {\
|
|
return Base::Init();\
|
|
} \
|
|
virtual void PreSubclassWindow()\
|
|
{\
|
|
List::PreSubclassWindow();\
|
|
if (m_bPreSubclassInit)\
|
|
Init();\
|
|
} \
|
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs)\
|
|
{\
|
|
if (!List::PreCreateWindow(cs))\
|
|
return FALSE;\
|
|
m_bPreSubclassInit = false;\
|
|
return TRUE;\
|
|
} \
|
|
bool m_bPreSubclassInit;\
|
|
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) {\
|
|
Base::OnCustomDraw(pNMHDR, pResult);\
|
|
} \
|
|
afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection) {\
|
|
List::OnSettingChange(uFlags, lpszSection);\
|
|
Base::OnSettingChange(uFlags, lpszSection);\
|
|
} \
|
|
afx_msg void OnDestroy(){\
|
|
Base::OnDestroy();\
|
|
List::OnDestroy();\
|
|
} \
|
|
afx_msg BOOL OnEraseBkgnd(CDC* pDC){\
|
|
return Base::OnEraseBkgnd(pDC);\
|
|
} \
|
|
afx_msg void OnPaint() {\
|
|
Base::OnPaint();\
|
|
} \
|
|
afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM lParam) {\
|
|
return Base::OnPrintClient(wParam, lParam);\
|
|
} \
|
|
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct)\
|
|
{\
|
|
if (List::OnCreate(lpCreateStruct) == -1)\
|
|
return -1;\
|
|
Init();\
|
|
return 0;\
|
|
} \
|
|
};
|
|
|
|
#define ON_LISTCTRL_REFLECT\
|
|
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)\
|
|
ON_WM_DESTROY()\
|
|
ON_WM_ERASEBKGND()\
|
|
ON_WM_PAINT()\
|
|
ON_MESSAGE(WM_PRINTCLIENT, OnPrintClient)\
|
|
ON_WM_CREATE()\
|
|
ON_WM_SETTINGCHANGE
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#endif // #if !defined(__XTPLISTBASE_H__)
|