События мыши 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().

Другие вопросы по тегам