public unsafe void ListView_HeaderAlignment_GetGroupInfo_Success(HorizontalAlignment valueParam, int expectedAlignParam) { // Run this from another thread as we call Application.EnableVisualStyles. RemoteExecutor.Invoke((valueString, expectedAlignString) => { HorizontalAlignment value = (HorizontalAlignment)Enum.Parse(typeof(HorizontalAlignment), valueString); int expectedAlign = int.Parse(expectedAlignString); Application.EnableVisualStyles(); using var listView = new ListView(); var group1 = new ListViewGroup(); listView.Groups.Add(group1); Assert.NotEqual(IntPtr.Zero, listView.Handle); group1.HeaderAlignment = value; Assert.Equal((IntPtr)1, User32.SendMessageW(listView.Handle, (User32.WindowMessage)ComCtl32.LVM.GETGROUPCOUNT, IntPtr.Zero, IntPtr.Zero)); char *buffer = stackalloc char[256]; var lvgroup = new ComCtl32.LVGROUPW { cbSize = (uint)sizeof(ComCtl32.LVGROUPW), mask = ComCtl32.LVGF.HEADER | ComCtl32.LVGF.GROUPID | ComCtl32.LVGF.ALIGN, pszHeader = buffer, cchHeader = 256 }; Assert.Equal((IntPtr)1, User32.SendMessageW(listView.Handle, (User32.WindowMessage)ComCtl32.LVM.GETGROUPINFOBYINDEX, (IntPtr)0, ref lvgroup)); Assert.Equal("ListViewGroup", new string(lvgroup.pszHeader)); Assert.True(lvgroup.iGroupId >= 0); Assert.Equal(expectedAlign, (int)lvgroup.uAlign); }, valueParam.ToString(), expectedAlignParam.ToString()).Dispose(); }
public unsafe void ListViewGroup_Header_GetGroupInfo_Success() { // Run this from another thread as we call Application.EnableVisualStyles. RemoteExecutor.Invoke(() => { foreach (object[] data in Header_GetGroupInfo_TestData()) { string value = (string)data[0]; string expected = (string)data[1]; Application.EnableVisualStyles(); using var listView = new ListView(); var group = new ListViewGroup(); listView.Groups.Add(group); Assert.NotEqual(IntPtr.Zero, listView.Handle); group.Header = value; Assert.Equal((IntPtr)1, User32.SendMessageW(listView.Handle, (User32.WindowMessage)ComCtl32.LVM.GETGROUPCOUNT, IntPtr.Zero, IntPtr.Zero)); char *buffer = stackalloc char[256]; var lvgroup = new ComCtl32.LVGROUPW { cbSize = (uint)sizeof(ComCtl32.LVGROUPW), mask = ComCtl32.LVGF.HEADER | ComCtl32.LVGF.GROUPID | ComCtl32.LVGF.ALIGN, pszHeader = buffer, cchHeader = 256 }; Assert.Equal((IntPtr)1, User32.SendMessageW(listView.Handle, (User32.WindowMessage)ComCtl32.LVM.GETGROUPINFOBYINDEX, (IntPtr)0, ref lvgroup)); Assert.Equal(expected, new string(lvgroup.pszHeader)); Assert.True(lvgroup.iGroupId >= 0); Assert.Equal(ComCtl32.LVGA.HEADER_LEFT, lvgroup.uAlign); } }).Dispose(); }