private static bool GetState(ListViewGroup group, LVGS state)
 {
     bool flag;
     int groupId = GetGroupId(group);
     if (groupId < 0)
     {
         return false;
     }
     IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Microsoft.Win32.LVGROUP)));
     try
     {
         Microsoft.Win32.LVGROUP.SetMask(ptr, LVGF.LVGF_NONE | LVGF.LVGF_GROUPID | LVGF.LVGF_STATE, true);
         Microsoft.Win32.LVGROUP.SetGroupId(ptr, groupId);
         Microsoft.Win32.LVGROUP.SetStateMask(ptr, state, true);
         if (((int) Windows.SendMessage(group.ListView.Handle, 0x1095, (IntPtr) groupId, ptr)) >= 0)
         {
             return ((Microsoft.Win32.LVGROUP.GetState(ptr) & state) > LVGS.LVGS_NORMAL);
         }
         flag = false;
     }
     finally
     {
         Marshal.FreeHGlobal(ptr);
     }
     return flag;
 }
示例#2
0
 public static unsafe void SetStateMask(IntPtr ptr, LVGS mask, bool value)
 {
     if (value)
     {
         void* voidPtr1 = (void*) ptr;
         voidPtr1->stateMask |= mask;
     }
     else
     {
         void* voidPtr2 = (void*) ptr;
         voidPtr2->stateMask &= ~mask;
     }
 }
示例#3
0
        public unsafe void SetGroupState(ListViewGroup group, LVGS state)
        {
            int groupId = GetGroupId(group);

            if (groupId < 0)
            {
                groupId = Groups.IndexOf(group) - _minGroupInsertionIndex;
            }

            var lvgroup = new LVGROUPW();

            lvgroup.cbSize   = (uint)sizeof(LVGROUPW);
            lvgroup.state    = state;
            lvgroup.mask     = LVGF.STATE;
            lvgroup.iGroupId = groupId;

            NativeMethods.SendMessageW(Handle, LVM_SETGROUPINFO, (IntPtr)groupId, ref lvgroup);
        }
 private static void SetState(ListViewGroup group, LVGS state, bool value)
 {
     int groupId = GetGroupId(group);
     if (groupId >= 0)
     {
         Microsoft.Win32.LVGROUP lvgroup = new Microsoft.Win32.LVGROUP {
             cbSize = Marshal.SizeOf(typeof(Microsoft.Win32.LVGROUP)),
             mask = LVGF.LVGF_NONE | LVGF.LVGF_GROUPID | LVGF.LVGF_STATE,
             iGroupId = groupId,
             stateMask = state
         };
         if (value)
         {
             lvgroup.state = state;
         }
         GCHandle handle = GCHandle.Alloc(lvgroup, GCHandleType.Pinned);
         try
         {
             Windows.SendMessage(group.ListView.Handle, 0x1093, (IntPtr) groupId, handle.AddrOfPinnedObject());
         }
         finally
         {
             handle.Free();
         }
     }
 }
示例#5
0
        private unsafe void ReloadListView()
        {
            ListViewGroup group = listView1.Groups[0];
            int           id    = (int)typeof(ListViewGroup).GetProperty("ID", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(group);

            IntPtr lParam = (IntPtr)id;
            LVGF   mask   = 0;

            mask |= LVGF.HEADER;
            mask |= LVGF.SUBTITLE;
            mask |= LVGF.FOOTER;
            mask |= LVGF.ALIGN;
            mask |= LVGF.DESCRIPTIONBOTTOM;
            mask |= LVGF.DESCRIPTIONTOP;
            mask |= LVGF.STATE;
            mask |= LVGF.TASK;
            mask |= LVGF.TITLEIMAGE;
            mask |= LVGF.EXTENDEDIMAGE;
            LVGS stateMask =
                LVGS.COLLAPSED |
                LVGS.COLLAPSIBLE |
                LVGS.NOHEADER |
                LVGS.SUBSETED |
                0;
            LVGS state = 0;

            if (collapsibleCheckBox.Checked)
            {
                state |= LVGS.COLLAPSIBLE;
            }
            if (collapsedCheckBox.Checked)
            {
                state |= LVGS.COLLAPSED;
            }
            if (!showHeaderCheckBox.Checked)
            {
                state |= LVGS.NOHEADER;
            }
            if (subsetTitleCheckBox.Checked)
            {
                state |= LVGS.SUBSETED;
            }
            var lvgroup = new LVGROUPW
            {
                cbSize         = (uint)sizeof(LVGROUPW),
                mask           = mask,
                iGroupId       = id,
                stateMask      = stateMask,
                state          = state,
                iTitleImage    = (int)titleImageIndexNumericUpDown.Value,
                iExtendedImage = (int)extendedImageIndexNumericUpDown.Value,
            };

            switch (headerAlignmentComboBox.SelectedIndex)
            {
            case 0:
                lvgroup.uAlign |= LVGA.HEADER_LEFT;
                break;

            case 1:
                lvgroup.uAlign |= LVGA.HEADER_CENTER;
                break;

            case 2:
                lvgroup.uAlign |= LVGA.HEADER_RIGHT;
                break;
            }

            switch (footerAlignmentComboBox.SelectedIndex)
            {
            case 0:
                lvgroup.uAlign |= LVGA.FOOTER_LEFT;
                break;

            case 1:
                lvgroup.uAlign |= LVGA.FOOTER_CENTER;
                break;

            case 2:
                lvgroup.uAlign |= LVGA.FOOTER_RIGHT;
                break;
            }

            fixed(char *pHeader = headerTextBox.Text)
            fixed(char *pFooter            = footerTextBox.Text)
            fixed(char *pDescriptionBottom = descriptionBottomTextBox.Text)
            fixed(char *pDescriptionTop    = descriptionTopTextBox.Text)
            fixed(char *pSubsetTitle       = subsetTitleTextBox.Text)
            fixed(char *pSubtitle          = subtitleTextBox.Text)
            fixed(char *pTask = taskTextBox.Text)
            {
                if (footerCheckBox.Checked && footerTextBox.Text.Length > 0)
                {
                    lvgroup.cchFooter = footerTextBox.Text.Length;
                    lvgroup.pszFooter = pFooter;
                }
                if (descriptionBottomCheckBox.Checked)
                {
                    lvgroup.cchDescriptionBottom = (uint)descriptionBottomTextBox.Text.Length;
                    lvgroup.pszDescriptionBottom = pDescriptionBottom;
                }
                if (descriptionTopCheckBox.Checked)
                {
                    lvgroup.cchDescriptionTop = (uint)descriptionTopTextBox.Text.Length;
                    lvgroup.pszDescriptionTop = pDescriptionTop;
                }
                if (subsetTitleCheckBox.Checked)
                {
                    lvgroup.cchSubsetTitle = (uint)subsetTitleTextBox.Text.Length;
                    lvgroup.pszSubsetTitle = pSubsetTitle;
                }
                if (subtitleCheckBox.Checked)
                {
                    lvgroup.cchSubsetTitle = (uint)subtitleTextBox.Text.Length;
                    lvgroup.pszSubtitle    = pSubtitle;
                }
                if (taskCheckBox.Checked && taskTextBox.Text.Length > 0)
                {
                    lvgroup.cchTask = (uint)taskTextBox.Text.Length;
                    lvgroup.pszTask = pTask;
                }

                lvgroup.pszHeader = pHeader;
                IntPtr result = User32.SendMessageW(listView1.Handle, (User32.WindowMessage)LVM.SETGROUPINFO, lParam, ref lvgroup);

                listView1.Invalidate(true);
            }
        }