protected override IntPtr OnCommand(IntPtr hWnd, WM msg, IntPtr wParam, IntPtr lParam) { BN code = (BN)(wParam.ToInt32() >> 16); switch (code) { case BN.CLICKED: OnClick(EventArgs.Empty); Win32Window.SendMessage(m_hwndControl, (int)BM.SETCHECK, (int)BST.CHECKED, 0); return(IntPtr.Zero); case BN.KILLFOCUS: OnLostFocus(EventArgs.Empty); return(IntPtr.Zero); case BN.SETFOCUS: OnGotFocus(EventArgs.Empty); return(IntPtr.Zero); case BN.DBLCLK: OnDoubleClick(EventArgs.Empty); return(IntPtr.Zero); default: return(Win32Window.CallWindowProc(prevWndProc, hWnd, msg, wParam, lParam)); } }
protected virtual IntPtr WndProc(IntPtr hWnd, WM msg, IntPtr wParam, IntPtr lParam) { //System.Diagnostics.Debug.WriteLine(string.Format("{1:X} {0}", ((WM)msg).ToString(), hWnd)); // For WM_DESTROY - unsubclass the control if ((WM)msg == WM.DESTROY) { IntPtr p = prevWndProc; Unsubclass(); return(Win32Window.CallWindowProc(p, hWnd, msg, wParam, lParam)); } else if ((WM)msg == WM.DRAWITEM) { return((IntPtr)OnDrawItem(hWnd, msg, wParam, lParam)); } else if ((WM)msg == WM.MEASUREITEM) { return((IntPtr)OnMeasureItem(hWnd, msg, wParam, lParam)); } else if ((WM)msg == WM.NOTIFY) { return((IntPtr)OnNotify(hWnd, msg, wParam, lParam)); } else if ((WM)msg == WM.COMMAND) { return((IntPtr)OnCommand(hWnd, msg, wParam, lParam)); } else if ((WM)msg == WM.SIZE) { OnResize(EventArgs.Empty); return(IntPtr.Zero); } else { return(Win32Window.CallWindowProc(prevWndProc, hWnd, msg, wParam, lParam)); } }
protected override IntPtr OnNotify(IntPtr hWnd, WM msg, IntPtr wParam, IntPtr lParam) { if (prevWndProc == IntPtr.Zero) { return(IntPtr.Zero); } NMCUSTOMDRAW nmcd = (NMCUSTOMDRAW)Marshal.PtrToStructure(lParam, typeof(NMCUSTOMDRAW)); //System.Diagnostics.Debug.WriteLine(string.Format("{0}", (NM)nmcd.hdr.code)); if (nmcd.hdr.code == (int)NM.DBLCLK) { OnDoubleClick(EventArgs.Empty); return(IntPtr.Zero); } if (nmcd.hdr.code != (int)NM.CUSTOMDRAW || nmcd.hdr.hwndFrom != control.Handle) { return(Win32Window.CallWindowProc(prevWndProc, hWnd, msg, wParam, lParam)); } CustomDrawType cd = (CustomDrawType)Marshal.PtrToStructure(lParam, typeof(CustomDrawType)); //System.Diagnostics.Debug.WriteLine(cd.dwDrawStage); try { switch (cd.dwDrawStage) { case CDDS.PREPAINT: if (FullPaint && !OnPrepaint(ref cd)) { return((IntPtr)CDRF.DODEFAULT); } return((IntPtr)(CDRF.NOTIFYITEMDRAW | CDRF.NOTIFYPOSTERASE | CDRF.NOTIFYSUBITEMDRAW | CDRF.NOTIFYPOSTPAINT)); case CDDS.ITEMPREPAINT: //if (listView.View == View.Details) // return (int)CDRF.NOTIFYSUBITEMDRAW; if (!OnPrepaintItem(ref cd)) { return((IntPtr)CDRF.DODEFAULT); } if (fullPaint) { return((IntPtr)(CDRF.SKIPDEFAULT)); } else { return((IntPtr)(CDRF.NOTIFYSUBITEMDRAW)); } case CDDS.SUBITEMPREPAINT: if (!OnPrepaintItem(ref cd)) { return((IntPtr)CDRF.DODEFAULT); } if (fullPaint) { return((IntPtr)(CDRF.SKIPDEFAULT)); } else { return((IntPtr)(CDRF.NOTIFYITEMDRAW)); } case CDDS.ITEMPOSTPAINT: return((IntPtr)(CDRF.SKIPDEFAULT)); case CDDS.PREERASE: if (fullPaint || !OnPreerase(ref cd)) { return((IntPtr)CDRF.DODEFAULT); } return((IntPtr)(CDRF.NOTIFYPOSTERASE)); } } finally { Marshal.StructureToPtr(cd, lParam, false); } return((IntPtr)CDRF.DODEFAULT); }
protected override IntPtr OnCommand(IntPtr hWnd, WM msg, IntPtr wParam, IntPtr lParam) { return(Win32Window.CallWindowProc(prevWndProc, hWnd, msg, wParam, lParam)); }