Example #1
0
            protected unsafe override void WndProc(ref Message m)
            {
                switch ((User32.WM)m.Msg)
                {
                case User32.WM.GETDLGCODE:
                    m.Result = (IntPtr)((long)m.Result | (int)User32.DLGC.WANTALLKEYS);
                    return;

                case User32.WM.MOUSEMOVE:
                    if (clickSeen)
                    {
                        clickSeen = false;
                    }
                    break;

                case User32.WM.REFLECT_NOTIFY:
                    User32.NMHDR *nmtv = (User32.NMHDR *)m.LParam;
                    if (nmtv->code == (int)ComCtl32.NM.CLICK)
                    {
                        clickSeen = true;
                    }
                    break;
                }
                base.WndProc(ref m);
            }
Example #2
0
            protected unsafe override void WndProc(ref Message m)
            {
                switch (m.MsgInternal)
                {
                case User32.WM.GETOBJECT:
                    WmGetObject(ref m);
                    break;

                case User32.WM.NOTIFY:
                    User32.NMHDR *nmhdr = (User32.NMHDR *)m.LParamInternal;
                    if (nmhdr->code == (int)ComCtl32.TTN.SHOW || nmhdr->code == (int)ComCtl32.TTN.POP)
                    {
                        OnToolTipVisibilityChanging(nmhdr->idFrom, nmhdr->code == (int)ComCtl32.TTN.SHOW);
                    }

                    break;

                case User32.WM.ERASEBKGND:
                    break;

                case User32.WM.PAINT:
                    OnPaint();
                    break;

                default:
                    base.WndProc(ref m);
                    break;
                }
            }
Example #3
0
            protected unsafe override void WndProc(ref Message m)
            {
                switch (m.Msg)
                {
                case WindowMessages.WM_GETDLGCODE:
                    m.Result = (IntPtr)((long)m.Result | NativeMethods.DLGC_WANTALLKEYS);
                    return;

                case WindowMessages.WM_MOUSEMOVE:
                    if (clickSeen)
                    {
                        clickSeen = false;
                    }
                    break;

                case WindowMessages.WM_REFLECT + WindowMessages.WM_NOTIFY:
                    User32.NMHDR *nmtv = (User32.NMHDR *)m.LParam;
                    if (nmtv->code == (int)ComCtl32.NM.CLICK)
                    {
                        clickSeen = true;
                    }
                    break;
                }
                base.WndProc(ref m);
            }
Example #4
0
            protected unsafe override void WndProc(ref Message m)
            {
                if (m.Msg == (int)(User32.WM.REFLECT_NOTIFY))
                {
                    User32.NMHDR *nmhdr = (User32.NMHDR *)m.LParam;
                    if (nmhdr->code == (int)ComCtl32.NM.CUSTOMDRAW)
                    {
                        OnCustomDraw(ref m);
                        return;
                    }
                }

                base.WndProc(ref m);
            }
        protected unsafe override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
            case (int)User32.WM.NOTIFY:
            case (int)User32.WM.REFLECT_NOTIFY:
                User32.NMHDR *nmhdr = (User32.NMHDR *)m.LParam;
                if (nmhdr->code == (int)ComCtl32.HDN.ENDTRACKW)
                {
                    // Re-codegen if the columns have been resized
                    //
                    try
                    {
                        IComponentChangeService componentChangeService = (IComponentChangeService)GetService(typeof(IComponentChangeService));
                        componentChangeService.OnComponentChanged(Component, null, null, null);
                    }
                    catch (InvalidOperationException ex)
                    {
                        if (_inShowErrorDialog)
                        {
                            return;
                        }

                        IUIService uiService = (IUIService)Component.Site.GetService(typeof(IUIService));
                        _inShowErrorDialog = true;
                        try
                        {
                            ShowErrorDialog(uiService, ex, (ListView)Component);
                        }
                        finally
                        {
                            _inShowErrorDialog = false;
                        }

                        return;
                    }
                }

                break;
            }

            base.WndProc(ref m);
        }
Example #6
0
            protected unsafe override void WndProc(ref Message m)
            {
                switch (m.Msg)
                {
                case (int)LVM.HITTEST:
                case (int)LVM.GETITEM:
                case (int)LVM.GETITEMRECT:
                case (int)LVM.GETITEMCOUNT:
                case (int)LVM.GETITEMSTATE:
                case (int)LVM.GETNEXTITEM:
                case (int)LVM.FINDITEM:
                case (int)LVM.UPDATE:
                case (int)LVM.SETTEXTBKCOLOR:
                case (int)LVM.SETTEXTCOLOR:
                case (int)LVM.SETBKCOLOR:
                case (int)LVM.ENABLEGROUPVIEW:
                case (int)LVM.SETIMAGELIST:
                case (int)LVM.SETITEMSTATE:
                case (int)LVM.SETVIEW:
                case (int)User32.WindowMessage.WM_NCCREATE:
                case (int)User32.WindowMessage.WM_NCCALCSIZE:
                case (int)User32.WindowMessage.WM_CREATE:
                case (int)User32.WindowMessage.WM_MOUSEHOVER:
                case (int)User32.WindowMessage.WM_MOUSELEAVE:
                case (int)User32.WindowMessage.WM_MOUSEMOVE:
                case (int)User32.WindowMessage.WM_NCHITTEST:
                case (int)User32.WindowMessage.WM_SETCURSOR:
                case (int)User32.WindowMessage.WM_SETREDRAW:
                case (int)User32.WindowMessage.WM_KILLFOCUS:
                case (int)User32.WindowMessage.WM_PAINT:
                case (int)User32.WindowMessage.WM_ERASEBKGND:
                case (int)User32.WindowMessage.WM_CAPTURECHANGED:
                case (int)User32.WindowMessage.WM_SIZE:
                case (int)User32.WindowMessage.WM_MOVE:
                case (int)User32.WindowMessage.WM_IME_SETCONTEXT:
                case (int)User32.WindowMessage.WM_IME_NOTIFY:
                case (int)User32.WindowMessage.WM_SETFOCUS:
                    base.WndProc(ref m);
                    break;

                case (int)User32.WindowMessage.WM_LBUTTONUP:
                    base.DefWndProc(ref m);
                    break;

                case (int)User32.WindowMessage.WM_REFLECT_NOTIFY:
                    User32.NMHDR *nmhdr = (User32.NMHDR *)m.LParam;
                    switch (nmhdr->code)
                    {
                    case (int)LVN.LINKCLICK:
                    case (int)LVN.GETDISPINFOW:
                    case (int)LVN.ITEMCHANGING:
                    case (int)LVN.ITEMCHANGED:
                    case (int)LVN.INSERTITEM:
                    case (int)LVN.MARQUEEBEGIN:
                    case (int)LVN.HOTTRACK:
                    case (int)NM.SETFOCUS:
                    case (int)NM.KILLFOCUS:
                    case (int)NM.CUSTOMDRAW:
                    case (int)NM.RELEASEDCAPTURE:
                    case (int)NM.CLICK:
                        base.WndProc(ref m);
                        break;

                    case (int)LVN.COLUMNDROPDOWN:
                    {
                        NMLISTVIEW *nmlv   = (NMLISTVIEW *)m.LParam;
                        IntPtr      header = User32.SendMessageW(Handle, (User32.WindowMessage)LVM.GETHEADER, IntPtr.Zero, IntPtr.Zero);

                        RECT   r1      = default;
                        IntPtr result1 = User32.SendMessageW(header, (User32.WindowMessage)HDM.GETITEMDROPDOWNRECT, (IntPtr)nmlv->iSubItem, ref r1);
                        Point  p1      = PointToScreen(new Point(r1.left, r1.bottom));

                        RECT   r2      = default;
                        IntPtr result2 = User32.SendMessageW(header, (User32.WindowMessage)HDM.GETITEMRECT, (IntPtr)nmlv->iSubItem, IntPtr.Zero);
                        Point  p2      = PointToScreen(new Point(r2.right - SystemInformation.MenuButtonSize.Width, r2.bottom));

                        var          menu    = new ContextMenuStrip();
                        EventHandler onClick = (sender, e) => { };
                        menu.Items.Add(new ToolStripButton("Button")
                            {
                                CheckOnClick = true
                            });
                        menu.Show(p1);

                        break;
                    }

                    default:
                        base.WndProc(ref m);
                        break;
                    }

                    break;

                default:

                    //Debug.WriteLine((User32.WindowMessage)m.Msg);
                    base.WndProc(ref m);
                    break;
                }
            }
Example #7
0
            protected unsafe override void WndProc(ref Message m)
            {
                switch (m.Msg)
                {
                case (int)LVM.HITTEST:
                case (int)LVM.GETITEM:
                case (int)LVM.GETITEMRECT:
                case (int)LVM.GETITEMCOUNT:
                case (int)LVM.GETITEMSTATE:
                case (int)LVM.GETNEXTITEM:
                case (int)LVM.FINDITEM:
                case (int)LVM.UPDATE:
                case (int)LVM.SETTEXTBKCOLOR:
                case (int)LVM.SETTEXTCOLOR:
                case (int)LVM.SETBKCOLOR:
                case (int)LVM.ENABLEGROUPVIEW:
                case (int)LVM.SETIMAGELIST:
                case (int)LVM.SETITEMSTATE:
                case (int)LVM.SETVIEW:
                case (int)User32.WindowMessage.WM_NCCREATE:
                case (int)User32.WindowMessage.WM_NCCALCSIZE:
                case (int)User32.WindowMessage.WM_CREATE:
                case (int)User32.WindowMessage.WM_MOUSEHOVER:
                case (int)User32.WindowMessage.WM_MOUSELEAVE:
                case (int)User32.WindowMessage.WM_MOUSEMOVE:
                case (int)User32.WindowMessage.WM_NCHITTEST:
                case (int)User32.WindowMessage.WM_SETCURSOR:
                case (int)User32.WindowMessage.WM_SETREDRAW:
                case (int)User32.WindowMessage.WM_KILLFOCUS:
                case (int)User32.WindowMessage.WM_PAINT:
                case (int)User32.WindowMessage.WM_ERASEBKGND:
                case (int)User32.WindowMessage.WM_CAPTURECHANGED:
                case (int)User32.WindowMessage.WM_SIZE:
                case (int)User32.WindowMessage.WM_MOVE:
                case (int)User32.WindowMessage.WM_IME_SETCONTEXT:
                case (int)User32.WindowMessage.WM_IME_NOTIFY:
                case (int)User32.WindowMessage.WM_SETFOCUS:
                    base.WndProc(ref m);
                    break;

                case (int)User32.WindowMessage.WM_LBUTTONUP:
                    base.DefWndProc(ref m);
                    break;

                case (int)User32.WindowMessage.WM_REFLECT_NOTIFY:
                    User32.NMHDR *nmhdr = (User32.NMHDR *)m.LParam;
                    switch (nmhdr->code)
                    {
                    case (int)LVN.LINKCLICK:
                        NMLVLINK *link  = (NMLVLINK *)m.LParam;
                        string    task  = "Clicked";
                        var       group = new LVGROUPW
                        {
                            cbSize  = (uint)sizeof(LVGROUPW),
                            mask    = LVGF.TASK,
                            cchTask = (uint)task.Length
                        };
                        fixed(char *pTask = "Clicked")
                        {
                            group.pszTask = pTask;
                            User32.SendMessageW(Handle, (User32.WindowMessage)LVM.SETGROUPINFO, (IntPtr)link->iSubItem, ref group);
                            MessageBox.Show("Link Clicked");
                        }

                        break;

                    case (int)LVN.GETDISPINFOW:
                    case (int)LVN.ITEMCHANGING:
                    case (int)LVN.ITEMCHANGED:
                    case (int)LVN.INSERTITEM:
                    case (int)LVN.MARQUEEBEGIN:
                    case (int)LVN.HOTTRACK:
                    case (int)NM.SETFOCUS:
                    case (int)NM.KILLFOCUS:
                    case (int)NM.CUSTOMDRAW:
                    case (int)NM.RELEASEDCAPTURE:
                    case (int)NM.CLICK:
                    default:
                        break;
                    }

                    base.WndProc(ref m);
                    break;

                default:

                    //Debug.WriteLine((User32.WindowMessage)m.Msg);
                    base.WndProc(ref m);
                    break;
                }
            }