Example #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;
            }
        }
Example #2
0
        private void ParentFormOnWndProcMessage(ref Message m, HandledEventArgs args)
        {
            if (_completionWindow == null)
            {
                return;
            }

            WindowMessage msg = m;

            if (msg.Is(WindowMessageType.WM_NCACTIVATE))
            {
                // See http://stackoverflow.com/a/17346031/467582
                args.Handled = true;
                m.Result     = new IntPtr(-1);

                _deactivateParentWindowOnCompletionWindowClose = (msg.WParamPtr == IntPtr.Zero);
            }
        }
Example #3
0
        private void OnWndProcMessage(ref Message m, HandledEventArgs args)
        {
            WindowMessage msg = m;

            // Test if the About item was selected from the system menu
            if (!msg.Is(WindowMessageType.WM_SYSCOMMAND))
            {
                return;
            }

            var itemId = (int)m.WParam;
            var item   = _items.FirstOrDefault(menuItem => menuItem.Id == itemId);

            if (item == null)
            {
                return;
            }

            item.Click(EventArgs.Empty);
        }
Example #4
0
 private static bool IsLogicalVolume(WindowMessage msg)
 {
     return(msg.Is(LParam.DBT_DEVTYP_VOLUME));
 }
Example #5
0
 private static bool IsDeviceChangeEvent(WindowMessage msg)
 {
     return(msg.Is(WindowMessageType.WM_DEVICECHANGE));
 }