Ввод с помощью мыши

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

В этом разделе

Раздел Описание
Сведения о вводе с помощью мыши
В этом разделе рассматриваются входные данные с помощью мыши.
Использование ввода с помощью мыши
В этом разделе рассматриваются задачи, связанные с вводом с помощью мыши.
Справочник по вводу с помощью мыши

Функции

Имя Описание
_TrackMouseEvent Публикует сообщения, когда указатель мыши покидает окно или наносит указатель мыши на окно в течение указанного периода времени. Эта функция вызывает TrackMouseEvent , если она существует, в противном случае эмулирует ее.
BlockInput Блокирует доступ к приложениям с помощью клавиатуры и мыши.
DragDetect Захватывает мышь и отслеживает ее движение, пока пользователь не отпустит левую кнопку мыши, не нажмет клавишу ESC или не переместит мышь за пределы прямоугольника перетаскивания, в котором находится указанная точка. Ширина и высота прямоугольника перетаскивания задаются значениями SM_CXDRAG и SM_CYDRAG , возвращаемыми функцией GetSystemMetrics .
EnableMouseInPointer Позволяет мыши действовать в качестве указывающего устройства.
EnableWindow Включает или отключает ввод с помощью мыши и клавиатуры для указанного окна или элемента управления. Если входные данные отключены, окно не получает такие входные данные, как щелчки мышью и нажатия клавиш. Если вход включен, окно получает все входные данные.
GetCapture Извлекает дескриптор в окно (если таковое имеется), которое захватило мышь. Только одно окно за раз может захватывать мышь; Это окно получает ввод с помощью мыши независимо от того, находится ли курсор в пределах его границ.
GetDoubleClickTime Извлекает текущее время двойного щелчка мыши. Двойной щелчок — это последовательность из двух щелчков кнопки мыши, второй — в течение указанного времени после первого. Время двойного щелчка — это максимальное количество миллисекунд, которое может произойти между первым и вторым щелчком двойного щелчка.
GetMouseMovePointsEx Извлекает журнал до 64 предыдущих координат мыши или пера.
IsWindowEnabled Определяет, включено ли указанное окно для ввода с помощью мыши и клавиатуры.
ReleaseCapture Освобождает захват мыши из окна в текущем потоке и восстанавливает нормальную обработку ввода с помощью мыши. Окно, захватив мышь, получает все входные данные, независимо от положения курсора, за исключением нажатия кнопки мыши, когда курсор находится в окне другого потока.
SendInput Синтезирует нажатия клавиш, движения мыши и нажатия кнопок.
SetCapture Задает для захвата мыши указанное окно, принадлежащее текущему потоку. SetCapture захватывает входные данные мыши, когда указатель мыши находится над окном захвата или когда кнопка мыши была нажата, когда мышь находилась над окном захвата, а кнопка все еще не работает. Только одно окно за раз может захватывать мышь.
Если курсор мыши находится над окном, созданным другим потоком, система будет направлять ввод мыши в указанное окно только в том случае, если кнопка мыши не работает.
SetDoubleClickTime Задает время двойного щелчка мыши. Двойной щелчок — это последовательность из двух щелчков кнопки мыши, второй — в течение указанного времени после первого. Время двойного щелчка — это максимальное количество миллисекунд, которое может произойти между первым и вторым щелчком двойного щелчка.
SwapMouseButton Изменяет или восстанавливает значение левой и правой кнопок мыши.
TrackMouseEvent Публикует сообщения, когда указатель мыши покидает окно или наносит указатель мыши на окно в течение указанного периода времени.

Следующая функция устарела.

Функция Описание
mouse_event Синтезирует движения мыши и нажатия кнопок.

Уведомления

Имя Описание
WM_APPCOMMAND Уведомляет окно о том, что пользователь создал событие команды приложения, например, нажав кнопку приложения с помощью мыши или введя клавишу приложения на клавиатуре.
WM_CAPTURECHANGED Отправлено в окно, в которое теряется захват мыши.
WM_LBUTTONDBLCLK Публикуется, когда пользователь дважды щелкает левую кнопку мыши, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_LBUTTONDOWN Публикуется, когда пользователь нажимает левую кнопку мыши, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_LBUTTONUP Публикуется, когда пользователь отпускает левую кнопку мыши, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_MBUTTONDBLCLK Публикуется, когда пользователь дважды щелкает среднюю кнопку мыши, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_MBUTTONDOWN Публикуется, когда пользователь нажимает среднюю кнопку мыши, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_MBUTTONUP Публикуется, когда пользователь отпускает среднюю кнопку мыши, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_MOUSEACTIVATE Отправляется, когда курсор находится в неактивном окне и пользователь нажимает кнопку мыши. Родительское окно получает это сообщение, только если дочернее окно передает его функции DefWindowProc .
WM_MOUSEHOVER Публикуется в окне при наведении курсора на клиентную область окна в течение периода времени, указанного в предыдущем вызове TrackMouseEvent.
WM_MOUSEHWHEEL Отправляется в окно фокуса, когда горизонтальное колесико прокрутки мыши наклоняется или поворачивается. ФункцияDefWindowProcраспространяет сообщение на родительский элемент окна. Не должно быть внутренней пересылки сообщения, так как DefWindowProc распространяет его вверх по родительской цепочке, пока не найдет окно, обрабатывающее его.
WM_MOUSELEAVE Отправляется в окно, когда курсор покидает клиентную область окна, указанного в предыдущем вызове TrackMouseEvent.
WM_MOUSEMOVE Отображается в окне при перемещении курсора. Если мышь не захвачена, сообщение отправляется в окно, содержащее курсор. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_MOUSEWHEEL Отправляется в окно фокуса при повороте колесика мыши. Функция DefWindowProc распространяет сообщение на родительский элемент окна. Не должно быть внутренней пересылки сообщения, так как DefWindowProc распространяет его вверх по родительской цепочке, пока не найдет окно, обрабатывающее его.
WM_NCHITTEST Отправляется в окно, чтобы определить, какая часть окна соответствует определенной экранной координате. Это может произойти, например, при перемещении курсора, при нажатии или отпускании кнопки мыши или в ответ на вызов функции, такой как WindowFromPoint. Если мышь не захвачена, сообщение отправляется в окно под курсором. В противном случае сообщение отправляется в окно, которое захватило мышь.
WM_NCLBUTTONDBLCLK Публикуется, когда пользователь дважды щелкает левую кнопку мыши, когда курсор находится в неклиентской области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCLBUTTONDOWN Публикуется, когда пользователь нажимает левую кнопку мыши, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCLBUTTONUP Публикуется, когда пользователь отпускает левую кнопку мыши, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCMBUTTONDBLCLK Публикуется, когда пользователь дважды щелкает средней кнопкой мыши, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCMBUTTONDOWN Публикуется, когда пользователь нажимает среднюю кнопку мыши, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCMBUTTONUP Публикуется, когда пользователь отпускает среднюю кнопку мыши, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCMOUSEHOVER Отправляется в окно при наведении курсора на неклиентную область окна в течение периода времени, указанного в предыдущемвызове TrackMouseEvent.
WM_NCMOUSELEAVE Отправляется в окно, когда курсор покидает неклиентную область окна, указанную в предыдущемвызове TrackMouseEvent.
WM_NCMOUSEMOVE Публикуется в окне при перемещении курсора в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCRBUTTONDBLCLK Публикуется, когда пользователь дважды щелкает правую кнопку мыши, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCRBUTTONDOWN Публикуется, когда пользователь нажимает правую кнопку мыши, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCRBUTTONUP Публикуется, когда пользователь отпускает правую кнопку мыши, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCXBUTTONDBLCLK Публикуется, когда пользователь дважды щелкает первую или вторую кнопку X, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCXBUTTONDOWN Публикуется, когда пользователь нажимает первую или вторую кнопку X, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCXBUTTONUP Публикуется, когда пользователь отпускает первую или вторую кнопку X, когда курсор находится в неклиентной области окна. Это сообщение отправляется в окно, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_RBUTTONDBLCLK Публикуется, когда пользователь дважды щелкает правую кнопку мыши, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_RBUTTONDOWN Публикуется, когда пользователь нажимает правую кнопку мыши, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_RBUTTONUP Публикуется, когда пользователь отпускает правую кнопку мыши, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_XBUTTONDBLCLK Публикуется, когда пользователь дважды щелкает первую или вторую кнопку X, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_XBUTTONDOWN Публикуется, когда пользователь нажимает первую или вторую кнопку X, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.
WM_XBUTTONUP Публикуется, когда пользователь отпускает первую или вторую кнопку X, когда курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет отправлено в окно под курсором. В противном случае сообщение будет отправлено в окно, которое захватило мышь.

Структуры

Имя Описание
HARDWAREINPUT Содержит сведения о имитированном сообщении, созданном с помощью устройства ввода, отличного от клавиатуры или мыши.
ВХОД Содержит сведения, используемые для синтеза событий ввода, таких как нажатия клавиш, перемещение мыши и щелчки мышью.
LASTINPUTINFO Содержит время последнего ввода.
MOUSEINPUT Содержит сведения о имитированном событии мыши.
MOUSEMOVEPOINT Содержит сведения о расположении мыши в экранных координатах.
TRACKMOUSEEVENT Используется функцией TrackMouseEvent для отслеживания того, когда указатель мыши покидает окно или наносит указатель мыши на окно в течение определенного периода времени.