Introduction
This ReportCtrl control is an Outlook 98/2000 style SuperGrid control. I've
seen many implementations, most of them based on the standard
CListCtrl
. All implementations have their specific weaknesses. This
implementation tries to overcome some of the weaknesses, although for some
purposes it may introduce others.
The documentation is sparse, because I do not have much time to write
documentation. However, the included demo is a great help in understanding how
to use the features of the control and many features are demonstrated in a
practical manner. The interfaces of the controls highly resemble the interfaces
of similiar MFC controls, like the list control and header control. So, for the
more experienced MFC coder, it should not be a big problem to understand how to
use the control in their own projects...
Version History Excerpt (refer to source file for complete history)
This ReportCtrl control is an Outlook 98/2000 style SuperGrid control. I've
seen many implementations, most of them based on the standard CListCtrl. All
implementations have their specific weaknesses. This implementation tries to
overcome some of the weaknesses, although for some purposes it may introduce
others.
The documentation is sparse, because I do not have much time to write
documentation. However, the included demo is a great help in understanding how
to use the features of the control and many features are demonstrated in a
practical manner. The interfaces of the controls highly resemble the interfaces
of similiar MFC controls, like the list control and header control. So, for the
more experienced MFC coder, it should not be a big problem to understand how to
use the control in their own projects...
Version history excerpt (refer to source file for complete history):
2.0.1 - Fixed bug in DeleteItem for tree control mode.
- Fixed item expansion for single subitem hierarchy items.
- Added GetExpandedItemText to allow expanded items to show different
text from the subitem text.
- Added support for radio button and disabled check marks and
radio buttons.
- Added RVP_ENABLEFLATCHECKMARK property, to control the visual style
of check marks or radio buttons.
- Added support for check mark and radio button image list.
- Changed CurrentFocus() to GetCurrentFocus().
- Changed OnKillFocus to recognize all child windows.
- Extended MeasureItem function.
- Fixed GetNextItem() for RVTI_ROOT.
- Added support for SetRedraw suggested by Phil J Pearson.
- Optimized InsertItem performance by skipping GetRowFromItem
when the focus is not on an reorderable row, as suggested by
Phil J Pearson.
- Added disabled background function to CReportSubItemListCtrl.
- Added pre-create style passing to CReportView.
- Adjusted edit box position.
- Fixed a bug related to keydown messages in unfocused state.
- Fixed tip redraw problem and tip background color mismatch.
- Fixed kill tip on WM_KILLFOCUS, finally fixing click and double
click on expanded subitems.
- Added GetSelectedItems method.
- Fixed a selection bug in ClearSelection.
- Made GetReportCtrlPtr virtual and changed CReportView to use
overriden function to get a pointer to the embedded CReportCtrl.
This allows control derived from CReportCtrl to be embedded in
CReportView.
- Added UpdateWindow to SetRedraw when re-enabling redrawing.
- Removed legacy definitions from header file.
- Added blended image support through state bits, focus and selection
through the RVP_ENABLEIMAGEBLENDING and RVP_BLENDCOLOR properties.
- Added support for overlay images.
- Added Win2K tip fading to CReportTipCtrl.
- Fixed nFormat subitem member update in OnHdnItemChanged, as
suggested by Sven Ritter.
- Added selective item cache flush to SetItemCount.
- Added GetItemString() function to retrieve an item as a string.
- Added clipboard Copy support and clipboard separator and indent
properties.
- Fixed OnRvnEndItemEdit to not loose lParam, as suggested by
Paul Hurley.
- Added GetSortSettings() to retrieve sorting settings.
- Made SelectRows virtual to allow owner data multiple selection
management.
- Fixed a bug in DeleteItem for trees.
- Fixed various mouse button, keyboard selection/focus issues.
2.0.0 - Made scrolling with left or right cursor key dependent on
focus subitems style.
- Fixed resource leak in empty list, as suggested by Florent
Odelain.
- Fixed ResortItems and DeactivateSubItem bugs as suggested by
Rafael Lombardi Santos.
- Fixed HitTest on reordered columns, reported by Trevor Ash.
- Fixed item rect returned in hitinfo structure for scrolled
controls. This fixes incorrect positioning of tip windows.
- Added CReportHeaderCtrl to access CFlatHeaderCtrl's protected
members.
- Added first column indent functions, to support hierarchy
GUI elements.
- Fixed HitTest to retrieve correct item data.
- Added parameter to sort callback.
- Removed SortAllSubItems, because implementation was not
maintained and buggy.
- Fixed IsItemVisible and added GetTopIndex(), PageUp() and
PageDown() as suggested by Alina Kozlovsky.
- Added tree control features, both in preparation of group
view mode as well as a standalone feature.
- Fixed subitem text drawing following uninitialized subitems.
- Changed CompareItems callback and functions to support
separate subitems to enable tree view and group view sorting.
- Extended CompareItems to sort on checkboxes as suggested by
Peter Lagerhem.
- Fixed offset of subitem tip for items with images or checks
and text and related hittesting issues.
- Fixed NOHEADER style.
- Changed selected items and tree boxes in tree view mode visuals
to match common control look and feel.
- Fixed default height setting for font size updates with images.
- Fixed cosmetic bug with RVS_SHOWHGRID style, as suggested by Matrix.
- Fixed SelectAll() for empty control as suggested by Dmitry Sazonov.
- Added GetStyle().
- Added RVN_HEADERRCLICK to support popup menus on header.
- Fixed tooltip double click and ALT key relay events by removing
mouse capture.