public WindowMessageEventArgs(IntPtr _hWnd, WindowMessageEnum _uMsg, IntPtr _wParam, IntPtr _lParam) : base(null) { hWnd = _hWnd; uMsg = _uMsg; wParam = _wParam; lParam = _lParam; }
public WindowMessageEventArgs(Win32NativeWindow window, WindowMessageEnum _uMsg, IntPtr _wParam, IntPtr _lParam) : base(window) { hWnd = (window == null) ? IntPtr.Zero : window.Handle; uMsg = _uMsg; wParam = _wParam; lParam = _lParam; }
/// <summary> /// Override this method if you need to process messages before they get processed by the default handler. Useful to handle input and MCI notifications. /// </summary> /// <param name="uMsg"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> protected virtual IntPtr WndProc(WindowMessageEnum uMsg, IntPtr wParam, IntPtr lParam) { bool bDispose = false; // GameDebugger.Log("WndProc Message={0}=0x{1:x} wParam=0x{2:x} lParam=0x{3:x}", uMsg.ToString(), (int)uMsg, (int)wParam, (int)lParam); // GameDebugger.Add(String.Format("WndProc Message={0}=0x{1:x} wParam=0x{2:x} lParam=0x{3:x}", uMsg.ToString(), uMsg, (int)wParam, (int)lParam)); switch (uMsg) { case WindowMessageEnum.CLOSE: { if (!CanClose()) { return((IntPtr)1); } OnClose(); bDispose = true; break; } case WindowMessageEnum.SIZE: { Size2 size = new Size2((int)lParam & 0xFFFF, (int)((int)lParam >> 16) & 0xFFFF); OnResize(ref size); break; } case WindowMessageEnum.MOVE: { Point2 point; unchecked { point = new Point2((int)(short)((uint)lParam & 0xFFFF), (int)(short)((int)lParam >> 16) & 0xFFFF); } OnMove(ref point); break; } case WindowMessageEnum.ENTERSIZEMOVE: { OnEnterSizeMove(); break; } case WindowMessageEnum.EXITSIZEMOVE: { OnExitSizeMove(); break; } } IntPtr ret = DefWindowProc(uMsg, wParam, lParam); if (bDispose) { Dispose(); } return(ret); }
/// <summary> /// Override this method if you need to process messages that were not processed by the WndProc() method. /// </summary> /// <param name="uMsg"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> protected virtual IntPtr DefWindowProc(WindowMessageEnum uMsg, IntPtr wParam, IntPtr lParam) { if (PostprocessWindowMessageEvent != null) { WindowMessageEventArgs args = new WindowMessageEventArgs(this, uMsg, wParam, lParam); PostprocessWindowMessageEvent.Invoke(args); if (args.PreventsDefault) { return(args.ReturnValue); } } return(API.Externals.DefWindowProc(m_hWnd, uMsg, wParam, lParam)); }
internal IntPtr WndProcInternal(WindowMessageEnum uMsg, IntPtr wParam, IntPtr lParam) { if (PreprocessWindowMessageEvent != null) { WindowMessageEventArgs args = new WindowMessageEventArgs(this, uMsg, wParam, lParam); PreprocessWindowMessageEvent.Invoke(args); if (args.PreventsDefault) { return(args.ReturnValue); } } return(WndProc(uMsg, wParam, lParam)); }
// TODO: Add DISPLAYCHANGE method capture protected override IntPtr WndProc(WindowMessageEnum uMsg, IntPtr wParam, IntPtr lParam) { switch (uMsg) { case WindowMessageEnum.SYSCOMMAND: { if ((int)wParam == 0xF140 || // SC_SCREENSAVE (int)wParam == 0xF170) // SC_MONITORPOWER { return(IntPtr.Zero); } break; } } return(base.WndProc(uMsg, wParam, lParam)); }
public static IntPtr WndProc(IntPtr hWnd, WindowMessageEnum uMsg, IntPtr wParam, IntPtr lParam) { Win32NativeWindow window; switch (uMsg) { case WindowMessageEnum.ACTIVATEAPP: { Instance.OnActivate(!((int)wParam == 0)); break; } } if (Instance.Windows.TryGetValue((int)hWnd, out window)) { if (ProcessWindowMessageEvent != null) { WindowMessageEventArgs args = new WindowMessageEventArgs(window, uMsg, wParam, lParam); ProcessWindowMessageEvent(args); if (args.PreventsDefault) { return(args.ReturnValue); } } return(window.WndProcInternal(uMsg, wParam, lParam)); } if (ProcessWindowMessageEvent != null) { WindowMessageEventArgs args = new WindowMessageEventArgs(hWnd, uMsg, wParam, lParam); ProcessWindowMessageEvent(args); if (args.PreventsDefault) { return(args.ReturnValue); } } return(API.Externals.DefWindowProc(hWnd, uMsg, wParam, lParam)); }
public static extern Boolean PostMessage(IntPtr hWnd, WindowMessageEnum Msg, IntPtr wParam, IntPtr lParam);
public extern static IntPtr DefWindowProc(IntPtr hWnd, WindowMessageEnum uMsg, IntPtr wParam, IntPtr lParam);