Поделиться через


Ввод мыши

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

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

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

Функции

Имя Описание
_TrackMouseEvent Публикует сообщения, когда указатель мыши покидает окно или находится над окном в течение определенного периода времени. Эта функция вызывает TrackMouseEvent, если она существует, в противном случае она эмулирует ее.
BlockInput Блокирует поступление к приложениям событий ввода с клавиатуры и мыши.
DragDetect Записывает мышь и отслеживает его движение, пока пользователь не выпустит левую кнопку, нажимает клавишу ESC или перемещает мышь за пределы прямоугольника перетаскивания вокруг указанной точки. Ширина и высота прямоугольника перетаскивания задаются значениями SM_CXDRAG и SM_CYDRAG, возвращаемыми функцией GetSystemMetrics.
EnableMouseInPointer Позволяет мышью выступать в качестве указывающего устройства.
EnableWindow Включает или отключает ввод мыши и клавиатуры в указанное окно или элемент управления. Если входные данные отключены, окно не получает входные данные, такие как щелчки мыши и нажатия клавиш. Если входные данные включены, окно получает все входные данные.
GetCapture Извлекает дескриптор окна (если оно есть), которое захватило мышь. Только одно окно за раз может захватить мышь; данное окно получает ввод мыши, независимо от того, находится ли курсор в пределах.
GetDoubleClickTime Извлекает текущее время двойного щелчка мыши. Двойной щелчок — это серия двух нажатий кнопки мыши, вторая происходит в течение указанного времени после первого. Время двойного щелчка — это максимальное количество миллисекунд, которое может пройти между первым и вторым щелчком при двойном щелчке.
GetMouseMovePointsEx Извлекает историю до 64 предыдущих координат мыши или пера.
ЯвляетсяОкноВключено Определяет, включено ли указанное окно для ввода мыши и клавиатуры.
ОсвободитьЗахват Освобождает захват мыши из окна в рамках текущего потока и восстанавливает обычную обработку ввода мыши. Окно, запечатленное мышью, получает все входные данные мыши независимо от положения курсора, за исключением случаев, когда кнопка мыши щелкается, пока горячая точка курсора находится в окне другого потока.
SendInput Синтезирует нажатия клавиш, движения мыши и нажатия кнопки.
УстановитьЗахват Устанавливает захват мыши на указанное окно, принадлежащее текущему потоку. 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 Опубликовано, когда пользователь дважды щелкает XBUTTON1 или XBUTTON2, пока курсор находится в неклиентной области окна. Это сообщение публикуется в окне, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCXBUTTONDOWN Опубликовано, когда пользователь нажимает XBUTTON1 или XBUTTON2, пока курсор находится в неклиентной области окна. Это сообщение публикуется в окне, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_NCXBUTTONUP Опубликовано, когда пользователь освобождает XBUTTON1 или XBUTTON2, пока курсор находится в неклиентной области окна. Это сообщение публикуется в окне, содержащее курсор. Если окно захватило мышь, это сообщение не публикуется.
WM_RBUTTONDBLCLK Опубликовано, когда пользователь дважды щелкает правую кнопку мыши, пока курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет размещено в окне под курсором. В противном случае сообщение отправляется в окно, которое захватило мышь.
WM_RBUTTONDOWN Опубликовано, когда пользователь нажимает правую кнопку мыши, пока курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет размещено в окне под курсором. В противном случае сообщение отправляется окну, которое захватило мышь.
WM_RBUTTONUP Опубликовано, когда пользователь освобождает правую кнопку мыши, пока курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет размещено в окне под курсором. В противном случае сообщение отправляется в окно, которое перехватило мышь.
WM_XBUTTONDBLCLK Опубликовано, когда пользователь дважды щелкает XBUTTON1 или XBUTTON2, пока курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет размещено в окне под курсором. В противном случае сообщение отправляется в окно, которое захватило мышь.
WM_XBUTTONDOWN Опубликовано, когда пользователь нажимает XBUTTON1 или XBUTTON2, пока курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет размещено в окне под курсором. В противном случае сообщение отправляется в окно, которое захватило мышь.
WM_XBUTTONUP Опубликовано, когда пользователь освобождает XBUTTON1 или XBUTTON2, пока курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет размещено в окне под курсором. В противном случае сообщение публикуется в окне, которое захватило мышь.

Структуры

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