Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
14th
Мар
Определить, что кнопка зажата сейчас
Posted by obzor under Delphi
If (GetAsyncKeyState(VK_XBUTTON1) <> 0) or (GetAsyncKeyState(VK_XBUTTON2) <> 0)
Использую такую вот конструкцию, чтобы проверить зажата кнопка
Но если я нажал кнопку, отпустил и потом произошла проверка — она все равно даст результат true
А как сделать так, чтобы результат был true только если кнопка зажата сейчас?
Правильно проверять
If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. |
там меняются два разных бита
Вероятно тогда так:
If (GetAsyncKeyState(VK_XBUTTON1) and $8000=$8000)
or (GetAsyncKeyState(VK_XBUTTON2) and $8000=$8000)
then
{...}
Там меняются первый и последний биты:
$0001 кнопка была зажата между запросами GetAsyncKeyState
$8000 соответсвенно нажата сейчас. ($8000 это в hex, в bin 1000000000000000)
Причём последний бит сбрасывается если другое приложение вызывало GetAsyncKeyState, так что уповать на него не стоит.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)