예제 #1
0
        public unsafe int NearestIndex(Point pt)
        {
            var lvInsertMark = new LVINSERTMARK
            {
                cbSize = (uint)sizeof(LVINSERTMARK)
            };

            User32.SendMessageW(listView, (User32.WM)LVM.INSERTMARKHITTEST, (nint)(&pt), ref lvInsertMark);

            return(lvInsertMark.iItem);
        }
예제 #2
0
        internal unsafe void UpdateListView()
        {
            Debug.Assert(listView.IsHandleCreated, "ApplySavedState Precondition: List-view handle must be created");
            var lvInsertMark = new LVINSERTMARK
            {
                cbSize  = (uint)sizeof(LVINSERTMARK),
                dwFlags = appearsAfterItem ? LVIM.AFTER : LVIM.BEFORE,
                iItem   = index
            };

            User32.SendMessageW(listView, (User32.WM)LVM.SETINSERTMARK, 0, ref lvInsertMark);

            if (!color.IsEmpty)
            {
                User32.SendMessageW(listView, (User32.WM)LVM.SETINSERTMARKCOLOR, 0, color.ToWin32());
            }
        }