Пример #1
0
        private void CompletionWindowOnWndProcMessage(ref Message m, HandledEventArgs args)
        {
            WindowMessage msg = m;

            // Ensure that dialog keys get sent to the window
            if (msg.Is(WindowMessageType.WM_GETDLGCODE))
            {
                switch (msg.WParamInt64Value)
                {
                case VirtualKey.VK_TAB:
                case VirtualKey.VK_RETURN:
                case VirtualKey.VK_ESCAPE:
                case VirtualKey.VK_SPACE:
                case VirtualKey.VK_LEFT:
                case VirtualKey.VK_UP:
                case VirtualKey.VK_RIGHT:
                case VirtualKey.VK_DOWN:
                {
                    // Tell Windows that we want to receive WM_KEYDOWN messages for dialog keys when the scrollbar is focused.
                    // ElementHost.EnableModelessKeyboardInterop() already handles this when all other elements are focused,
                    // but for some reason if the user clicks on the scrollbar or scrolls with the mouse wheel
                    // WM_KEYDOWN messages don't get sent.
                    args.Handled = true;
                    m.Result     = new IntPtr(DialogCode.DLGC_WANTMESSAGE);
                    return;
                }
                }
            }

            // Ensure that focus is always on something that is listening for keyboard input
            if (msg.Is(WindowMessageType.WM_MOUSEWHEEL))
            {
                _mouseWheelThrottle.Reset();
            }

            if (msg.Is(WindowMessageType.WM_LBUTTONDOWN) ||
                msg.Is(WindowMessageType.WM_MBUTTONDOWN) ||
                msg.Is(WindowMessageType.WM_RBUTTONDOWN))
            {
                _editor.Focus();
                return;
            }

            if (msg.Is(WindowMessageType.WM_LBUTTONUP) ||
                msg.Is(WindowMessageType.WM_MBUTTONUP) ||
                msg.Is(WindowMessageType.WM_RBUTTONUP))
            {
                _editor.Focus();
                return;
            }
        }