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); }
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; } }
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); }
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); }
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; } }
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; } }