Geoff Chappell - Software Analyst
The ISubItemCallback methods are (as ordered in the virtual function table after the IUnknown methods):
HRESULT GetSubItemTitle (INT, PWSTR, INT);
HRESULT GetSubItemControl (INT, INT, REFIID, PVOID *);
HRESULT BeginSubItemEdit (INT, INT, INT, REFIID, PVOID *);
HRESULT EndSubItemEdit (INT, INT, INT, IPropertyControl *);
HRESULT BeginGroupEdit (INT, REFIID, PVOID *);
HRESULT EndGroupEdit (INT, INT, IPropertyControl *);
HRESULT OnInvokeVerb (INT, PCWSTR);
The one known purpose of the ISubItemCallback interface is to provide a set of callback functions for a List-View control. The interface is implemented by any component that has access to a List-View control and wants to participate in the handling of subitems. To register this set of callback functions for a List-View control, pass the address of the ISubItemCallback interface as the argument to the SetSubItemCallback method of the control’s IListView interface.
Thus, COMCTL32 supports the interface for someone else to implement. The only known implementation is in SHELL32.
The ISubItemCallback interface is supported by COMCTL32 versions 6.10 and higher.
Though new for Windows Vista, this interface is not documented by Microsoft in the January 2007 edition of the Software Development Kit (SDK) for Windows Vista.