/// <summary> /// Invokes the default window procedure associated with this Window. It is /// an error to call this method when the Handle property is zero. /// </summary> public void DefWndProc(ref Message m) { if (PreviousWindow == null) { if (_priorWindowProcHandle == IntPtr.Zero) { Debug.Fail($"Can't find a default window procedure for message {m} on class {GetType().Name}"); // At this point, there isn't much we can do. There's a small chance the following // line will allow the rest of the program to run, but don't get your hopes up. m.Result = User32.DefWindowProcW(m.HWnd, m.WindowMessage(), m.WParam, m.LParam); return; } m.Result = User32.CallWindowProcW(_priorWindowProcHandle, m.HWnd, m.WindowMessage(), m.WParam, m.LParam); } else { m.Result = PreviousWindow.Callback(m.HWnd, m.WindowMessage(), m.WParam, m.LParam); } }