private void listview_ColumnClick(object sender, ColumnClickEventArgs e) { IntPtr hHeader = (IntPtr)Sce.Atf.User32.SendMessage(m_listView.Handle, Sce.Atf.User32.LVM_GETHEADER, (int)IntPtr.Zero, (int)IntPtr.Zero); IntPtr newColumn = new IntPtr(e.Column); IntPtr prevColumn = new IntPtr(m_column); User32.HDITEM hdItem; IntPtr rtn; if (m_column == e.Column) { m_direction = -m_direction; } else if (m_column != -1) // Only update the previous item if it existed and if it was a different one. { // Clear icon from the previous column. hdItem = new User32.HDITEM(); hdItem.mask = User32.HDI_FORMAT; rtn = User32.SendMessageITEM(hHeader, User32.HDM_GETITEM, prevColumn, ref hdItem); hdItem.fmt &= ~User32.HDF_SORTDOWN & ~User32.HDF_SORTUP; rtn = User32.SendMessageITEM(hHeader, User32.HDM_SETITEM, prevColumn, ref hdItem); } // Set icon on the new column. hdItem = new User32.HDITEM(); hdItem.mask = User32.HDI_FORMAT; rtn = User32.SendMessageITEM(hHeader, User32.HDM_GETITEM, newColumn, ref hdItem); if (m_direction == 1) { hdItem.fmt &= ~User32.HDF_SORTDOWN; hdItem.fmt |= User32.HDF_SORTUP; } else { hdItem.fmt &= ~User32.HDF_SORTUP; hdItem.fmt |= User32.HDF_SORTDOWN; } rtn = User32.SendMessageITEM(hHeader, User32.HDM_SETITEM, newColumn, ref hdItem); m_column = e.Column; m_listView.ListViewItemSorter = null; m_listView.ListViewItemSorter = this; }
private void listview_ColumnClick(object sender, ColumnClickEventArgs e) { IntPtr hHeader = (IntPtr) Sce.Atf.User32.SendMessage(m_listView.Handle, Sce.Atf.User32.LVM_GETHEADER, (int)IntPtr.Zero, (int)IntPtr.Zero); IntPtr newColumn = new IntPtr(e.Column); IntPtr prevColumn = new IntPtr(m_column); User32.HDITEM hdItem; IntPtr rtn; if (m_column == e.Column) m_direction = -m_direction; else if (m_column != -1) // Only update the previous item if it existed and if it was a different one. { // Clear icon from the previous column. hdItem = new User32.HDITEM(); hdItem.mask = User32.HDI_FORMAT; rtn = User32.SendMessageITEM(hHeader, User32.HDM_GETITEM, prevColumn, ref hdItem); hdItem.fmt &= ~User32.HDF_SORTDOWN & ~User32.HDF_SORTUP; rtn = User32.SendMessageITEM(hHeader, User32.HDM_SETITEM, prevColumn, ref hdItem); } // Set icon on the new column. hdItem = new User32.HDITEM(); hdItem.mask = User32.HDI_FORMAT; rtn = User32.SendMessageITEM(hHeader, User32.HDM_GETITEM, newColumn, ref hdItem); if (m_direction == 1) { hdItem.fmt &= ~User32.HDF_SORTDOWN; hdItem.fmt |= User32.HDF_SORTUP; } else { hdItem.fmt &= ~User32.HDF_SORTUP; hdItem.fmt |= User32.HDF_SORTDOWN; } rtn = User32.SendMessageITEM(hHeader, User32.HDM_SETITEM, newColumn, ref hdItem); m_column = e.Column; m_listView.ListViewItemSorter = null; m_listView.ListViewItemSorter = this; }