Beispiel #1
0
            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;
            }