Xbutton1 что за кнопка
Перейти к содержимому

Xbutton1 что за кнопка

  • автор:

Ввод с помощью мыши (начало работы с Win32 и C++)

Windows поддерживает мыши с пятью кнопками: слева, посередине и справа, а также двумя дополнительными кнопками XBUTTON1 и XBUTTON2.

Иллюстрация, показывающая кнопки слева (1), справа (2), середины (3) и xbutton1 (4).

Большинство мышей для Windows имеют по крайней мере левую и правую кнопки. Левая кнопка мыши используется для наведения, выбора, перетаскивания и т. д. Как правило, на правой кнопке мыши отображается контекстное меню. У некоторых мышей есть колесико прокрутки, расположенное между левой и правой кнопками. В зависимости от мыши колесико прокрутки также может быть щелкаемым, что делает его средней кнопкой.

Кнопки XBUTTON1 и XBUTTON2 часто расположены по бокам мыши, рядом с основанием. Эти дополнительные кнопки присутствуют не на всех мышах. При наличии кнопок XBUTTON1 и XBUTTON2 часто сопоставляются с функцией приложения, такой как прямая и обратная навигация в веб-браузере.

Пользователям с левой рукой часто удобнее переключать функции левой и правой кнопок, используя правую кнопку в качестве указателя и левую кнопку для отображения контекстного меню. По этой причине в справочной документации Windows используются термины «основная кнопка» и » вторичная кнопка«, которые относятся к логической функции, а не к физическому размещению. В параметре по умолчанию (правша) левая кнопка является основной кнопкой, а правая — вторичной кнопкой. Однако термины щелкните правой кнопкой мыши и левой кнопкой мыши относятся к логическим действиям. Щелчок левой кнопкой означает нажатие основной кнопки независимо от того, находится ли она физически в правой или левой части мыши.

Независимо от того, как пользователь настраивает мышь, Windows автоматически преобразует сообщения мыши таким образом, чтобы они были согласованными. Пользователь может переключать основную и вторичную кнопки в середине использования программы, и это не повлияет на поведение программы.

В документации MSDN термины «левая кнопка» и «правая кнопка» обозначают основную ивторичную кнопки. Эта терминология согласуется с именами оконных сообщений для ввода с помощью мыши. Просто помните, что физические кнопки слева и справа могут быть заменены местами.

Xbutton1 что за кнопка

Начиная с Windows 2000, Microsoft поддерживает Microsoft IntelliMouse® Explorer (Проводник разумной мыши), который является мышью с пятью кнопками. В дополнение к левой, средней и правой кнопкам имеются XBUTTON1 (Х-кнопка1) и XBUTTON2 (Х-кнопка2), которые обеспечивают навигацию вперед и назад, если используется программа Microsoft Internet Explorer.

Диспетчер окна поддерживает XBUTTON1 и XBUTTON2 через посредство сообщений WM_XBUTTON * и WM_NCXBUTTON * . Старшее слово (HIWORD) параметра WPARAM в этих сообщениях содержит флажок, обозначающий, которая Х-кнопка была нажата. Поскольку эти сообщения мыши к тому же помещаются между константами WM_MOUSEFIRST и WM_MOUSELAST , приложение может фильтровать все сообщения мыши при помощи функции GetMessage или PeekMessage .

Windows 2000/XP: Ниже перечислены сообщения, поддерживающие XBUTTON1 и XBUTTON2:

Ниже перечислены существующие элементы API, которые модифицировались, чтобы поддержать новые кнопки:

Маловероятно, что дочернее окно в составляющей части приложения, будет в состоянии непосредственно реализовать команды для XBUTTON1 и XBUTTON2. Поэтому DefWindowProc отправляет сообщение WM_APPCOMMAND в окно, когда щелкают X-кнопкой. Функция DefWindowProc также отправляет и сообщение WM_APPCOMMAND в его родительское окно. Это похоже на способ, которым контекстные меню вызываются щелчком правой кнопки — DefWindowProc отправляет сообщение WM_CONTEXTMENU меню, а также отправляет это сообщение и его родителю. Дополнительно, если функция DefWindowProc получает сообщение WM_APPCOMMAND для окна верхнего уровня, то она вызывает фильтр (hook) событий оболочки с кодом HSHELL_APPCOMMAND .

Windows 2000/XP: Включена поддержка клавиатуры, которая имеет дополнительные клавиши для функций браузера, функций средств аудиовизуальной информации, запуска приложения и управления электропитанием. Дополнительную информацию, см. в статье Клавиши клавиатуры для просматривания и других функций.

Назад в оглавление
На главную страницу

Mouse. XButton1 Свойство

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Получает состояние первой расширенной кнопки.

public: static property System::Windows::Input::MouseButtonState XButton1 < System::Windows::Input::MouseButtonState get(); >;
public static System.Windows.Input.MouseButtonState XButton1
static member XButton1 : System.Windows.Input.MouseButtonState
Public Shared ReadOnly Property XButton1 As MouseButtonState
Значение свойства

Состояние первой расширенной кнопки мыши.

Примеры

В следующем примере показано, как определить, нажата ли первая расширенная кнопка мыши, проверив XButton1 , равно MouseButtonState ли состояние значения перечисления Pressed. При нажатии кнопки вызывается метод , который обновляет отображаемые элементы в примере.

if (Mouse.XButton1 == MouseButtonState.Pressed)
If Mouse.XButton1 = MouseButtonState.Pressed Then UpdateSampleResults("First Extended Button Pressed") End If 

Как узнать нажата XBUTTON1 или XBUTTON2?

Есть хук, который отслеживает нажатие WM_XBUTTONDOWN и WM_XBUTTONUP. Мне необходимо понять какая именно боковая кнопка мыши нажата (1-я или 2-я). Использую следующий код.

LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam) < if (nCode >= 0) < if (wParam == WM_XBUTTONDOWN || wParam == WM_XBUTTONUP) < GET_XBUTTON_WPARAM(wParam); // result = 0 MOUSEHOOKSTRUCTEX* mouseStruct = (MOUSEHOOKSTRUCTEX*)lParam; mouseStruct->mouseData;// result = 0 return -1; > > return CallNextHookEx(myHook, nCode, wParam, lParam); > 

Но и GET_XBUTTON_WPARAM(wParam), и структура mouseStruct->mouseData возвращают 0. Что я делаю не так и почему они возвращают всегда 0? Как исправить данную проблему?

Отслеживать
задан 15 авг 2018 в 19:04
99 10 10 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Почему вы используете MOUSEHOOKSTRUCTEX ? В обработчик WH_MOUSE_LL вам передается указатель на MSLLHOOKSTRUCT . Поэтому

const MSLLHOOKSTRUCT *mouseStruct = (const MSLLHOOKSTRUCT *) lParam; 

и вот там уже смотрим в mouseData .

Для WM_XBUTTONDOWN значения XBUTTON1 или XBUTTON2 должны передаваться в HIWORD(mouseStruct->mouseData) .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *