Событие Evn2: отпускание правой кнопки мыши
Что обозначает идентификатор Evn2 и метка RButnUp, как различаются переходы нажатия и отпускания, и как спроектировать проверку области для меню с отпусканием мыши.

Назначение
Идентификатор Evn2 в паре с меткой RButnUp обозначает событие отпускания правой кнопки мыши. Это имя-метка, а не числовое значение: Evn2 не является порядковым номером события и не задаёт его приоритет в очереди. В сохранённом заголовке нет описания аргументов, которые получает обработчик, и нет гарантии порядка доставки событий нажатия и отпускания. Читателю важно понимать, что сама метка сообщает лишь о типе перехода, а не о полном контракте вызова.
Переходы и состояние
Нажатие и отпускание кнопки это переходы, а не четыре устойчивых состояния. Концептуально компонент может вести учёт двух состояний, кнопка не нажата и кнопка нажата, а также переходов между ними. Обработчик отпускания может выполниться не в физический момент отпускания, а после того как событие попало в очередь и система его обработала. Метка Evn2 сама по себе не устанавливает нумерацию, тайминг или параметры вызова. Поэтому при проектировании кода нельзя полагаться на мгновенное срабатывание или на то, что нажатие всегда предшествует отпусканию в пределах одного компонента.
Отпускание без нажатия
Физическая правая кнопка мыши отличается от нажатия на экранный контрол. Общее приложение может вести учёт пар нажатие-отпускание, но событие отпускания может прийти без того, чтобы этот компонент видел соответствующее нажатие. Например, пользователь нажал кнопку над одним элементом, а отпустил над другим, либо нажатие было перехвачено другой частью интерфейса. Обработчик отпускания не должен предполагать, что нажатие обязательно наблюдалось. Практический вывод состоит в том, что код должен корректно обрабатывать отпускание как самостоятельный переход, независимо от истории предыдущих событий.
Пример с меню
Рассмотрим гипотетическое правило для контекстного меню. При нажатии правой кнопки внутри определённой области запоминается факт, что нажатие началось в этой области. При отпускании меню показывается только если нажатие всё ещё активно и отпускание произошло внутри той же области. Указатель может свободно перемещаться внутри области; точное совпадение координат нажатия и отпускания не требуется. Отмена, например нажатие клавиши Esc или перетаскивание за пределы области, очищает сохранённое состояние. Координаты при этом предполагаются в общей системе координат окна. Это концептуальная схема, а не подтверждённый контракт Evn2.
Отпускание и намерение пользователя
Отпускание правой кнопки само по себе не доказывает намерения пользователя. Повторные циклы нажатие-отпускание могут возникать при случайных касаниях, при работе с сенсорными панелями или при программной эмуляции ввода. Двойной щелчок состоит из двух пар нажатие-отпускание, а не из одной, и доставка отдельного уведомления о двойном щелчке зависит от конкретной среды выполнения. Фактические аргументы обработчика, временные пороги и правила отмены необходимо проверять для выбранного окружения, поскольку метка Evn2 не содержит этих сведений.