private IntPtr OverridenWndProc(IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam) { var msg = (WM)uMsg; var originalRet = User32Methods.CallWindowProc(originalWndProc, hWnd, uMsg, wParam, lParam); switch (msg) { case WM.LBUTTONDOWN: { var mousePoint = new System.Drawing.Point(lParam.ToInt32()); var dragHandler = browser.DragHandler as CefSharpDragHandler; if (dragHandler.DragRegion.IsVisible(mousePoint)) { // Release the capture of browser window and send a caption drag to the main window User32Methods.ReleaseCapture(); User32Methods.SendMessage(mainHandle, (uint)WM.NCLBUTTONDOWN, new IntPtr(2), IntPtr.Zero); } break; } case WM.NCHITTEST: { // If we hit a non client area (our overlapped frame) then we'll force an NCHITTEST to bubble back up to the main process IntPtr hitTest = HitTestNCA(hWnd, wParam, lParam); if (hitTest != IntPtr.Zero) { return(new IntPtr(-1)); } break; } } return(originalRet); }
private IntPtr WndProc(IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam) { _prevWndProc = User32Helpers.GetWindowLongPtr(hWnd, WindowLongFlags.GWLP_USERDATA); var msg = (WM)uMsg; switch (msg) { case WM.LBUTTONDOWN: if (_forwardAction != null) { if (IsCursorInDraggableRegion(hWnd, lParam)) { Message message = new Message(); message.Hwnd = hWnd; message.Value = uMsg; message.WParam = wParam; message.LParam = lParam; _forwardAction(message); return(IntPtr.Zero); } } break; } return(User32Methods.CallWindowProc(_prevWndProc, hWnd, uMsg, wParam, lParam)); }
private IntPtr OverridenWndProc(IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam) { var msg = (WM)uMsg; var originalRet = User32Methods.CallWindowProc(originalWndProc, hWnd, uMsg, wParam, lParam); switch (msg) { case WM.NCHITTEST: { // If we hit a non client area (our overlapped frame) then we'll force an NCHITTEST to bubble back up to the main process IntPtr hitTest = HitTestNCA(hWnd, wParam, lParam); if (hitTest != IntPtr.Zero) { return(new IntPtr(-1)); } break; } } return(originalRet); }
protected virtual void OnMessageDefault(ref WindowMessage msg) { msg.SetResult(User32Methods.CallWindowProc(this.m_baseWindowProcPtr, msg.Hwnd, (uint)msg.Id, msg.WParam, msg.LParam)); }