События мыши User32.dll
Я смотрю на класс управления курсором, который я пытаюсь адаптировать для моей программы. У меня все работает, как я хочу, но я немного не был уверен, что означают эти цифры в данном случае. Кто-нибудь может пролить свет на значение 0x01 и т. Д.
private const int MouseEventMove = 0x01;
private const int MouseEventLeftDown = 0x02;
private const int MouseEventLeftUp = 0x04;
private const int MouseEventRightDown = 0x08;
private const int MouseEventRightUp = 0x10;
private const int MouseEventAbsolute = 0x8000;
Благодарю.
2 ответа
Это перечисления флагов. Каждому из них присваивается значение в степени 2, поэтому для любого объединенного значения не будет никакой двусмысленности относительно того, какие из флагов установлены.
Из MSDN:
Перечисления флагов используются для маскирования битовых полей и выполнения побитовых сравнений. Они являются правильной схемой, которую следует использовать, когда можно одновременно указать несколько значений перечисления.
http://msdn.microsoft.com/en-us/library/ms229062.aspx
В вашем конкретном случае кажется, что перечисление описывает, какой тип события мыши происходит.
Редактировать: Как указывает Ганс, технически это не перечисление, а группа const int
определения, хотя для всех практических целей я чувствую, что это служит перечислением - давая удобочитаемую метку для интегрального значения. Есть более подходящее название для этого?
Это значения флагов MOUSEEVENTF, которые вы передаете в API-функцию Windows mouse_event(). Значения флага объявляются в заголовочном файле WinUser.h Windows SDK. Как отмечено в связанной статье MSDN, вам больше не следует использовать эту функцию.
Посетите pinvoke.net, чтобы получить правильное объявление для SendInput().