protected void EnableVirtualGroups()
{
// We need to implement the IOwnerDataCallback interface
if (this.ownerDataCallbackImpl == null)
this.ownerDataCallbackImpl = new OwnerDataCallbackImpl(this);
const int LVM_SETOWNERDATACALLBACK = 0x10BB;
IntPtr ptr = Marshal.GetComInterfaceForObject(ownerDataCallbackImpl, typeof(IOwnerDataCallback));
IntPtr x = NativeMethods.SendMessage(this.Handle, LVM_SETOWNERDATACALLBACK, ptr, 0);
//System.Diagnostics.Debug.WriteLine(x);
Marshal.Release(ptr);
const int LVM_ENABLEGROUPVIEW = 0x1000 + 157;
x = NativeMethods.SendMessage(this.Handle, LVM_ENABLEGROUPVIEW, 1, 0);
//System.Diagnostics.Debug.WriteLine(x);
}