コード例 #1
0
ファイル: Window.cs プロジェクト: RupertAvery/Chromely
            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);
            }
コード例 #2
0
        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));
        }
コード例 #3
0
            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);
            }
コード例 #4
0
 protected virtual void OnMessageDefault(ref WindowMessage msg)
 {
     msg.SetResult(User32Methods.CallWindowProc(this.m_baseWindowProcPtr, msg.Hwnd, (uint)msg.Id, msg.WParam,
                                                msg.LParam));
 }