I released some updates which fix various bugs. The update for ButtonControls also brings an interesting new VB6 sample that demonstrates how to implement a color chooser drop-down button using ButtonControls.
As only one bug has been reported for the RC1, ExplorerListView now is final.
I guess some of you did not expect it anymore, but I’ve released a first release candidate of the ShellBrowserControls library.
The library contains two controls: ShellTreeView and ShellListView. ShellTreeView can be attached to ExplorerTreeView 2.0.0 or newer, ShellListView can be attached to ExplorerListView 1.0.0 RC1 or newer. The setup contains only 1 sample, but it demonstrates how to use ShellBrowserControls, ExplorerListView, ExplorerTreeView, StatusBar, TrackBar and Animation to build a Explorer-like shell browser. The sample does not contain much code, but supports things like dynamically scalable thumbnails (in Vista design!), Tiles view, elevation overlays, drag’n’drop, context menus and much more. It also demonstrates how to mix shell items with user-defined items.
ShellBrowserControls has been designed to hide as much of the ugly shell stuff as possible while letting you customize every detail. If you don’t want to bother with shell programming, you will be happy with this library. If you are a control freak and want to control every part of the shell-browsing, you will be happy with this library as well. The only major feature that is missing is grouping support, i. e. currently there is no group view mode (although ExplorerListView supports it).
ShellBrowserControls makes extensive use of multi-threading. Loading of items, icons, thumbnails, details and columns has been moved to background threads as much as possible, so that the GUI remains responsive even if some loading process takes a long time.
If you have questions about the usage of the library, please use the forum. Some concepts seem to be complicated, but my beta tester already assured, that they are very powerful once you have understood them.
When using the controls, do not forget that tree view features are controlled by ExplorerTreeView, list view features are controlled by ExplorerListView and shell features are controlled by ShellTreeView/ShellListView.
This is the most complex software I have ever written. I did extensive tests, but be aware of bugs.
As I consider the interface for the ShellBrowserControls to be complete, I’ve decided to release an update of ExplorerListView. The changes are massive. There are new features like group footers, subsetted groups and grouping in virtual mode. Other features have been improved, e. g. there is an extended full row selection mode now. Of course I have also fixed bugs.
Unfortunately I had to break compatibility, but that’s why the previous release was labeled as a beta.
By the way, the ShellBrowserControls library currently is in final tests.
Thanks to Geoff Chappell, the next release of ExplorerListView will include several new features. Geoff has analyzed Windows Vista and he has found out that the native list view control of Vista has an undocumented COM interface. This interface can be used to do things like footer areas, subseted groups and groups in virtual mode. I’ve published an article on The Code Project about it.
Footer area support is already implemented and works fine on Windows Vista and 7 Beta 1 (I did not test 2008, but would be surprised if it wouldn’t work there). Subseted groups support is complete, too. It works on Vista (and probably 2008), but not yet on 7. Groups in virtual mode are working, too, but again on Vista and 2008 only.
Here’s a screenshot showing the footer area support:
Unfortunatly, to implement groups in virtual mode in a clean manner, I had to do some compatibility-breaking changes.
Much later than planned I have released an update of ExplorerListView. The changelog is as long as a novel. Most changes are new features available on Windows Vista. No less important is the implementation of the interface for the upcoming ShellBrowser control. I’ve also fixed many bugs.
Support for Windows 98, ME and NT4 has been dropped because my compiler doesn’t support those systems anymore. But Windows 7 is already supported.