#c #winapi #keypress #boolean
#c #winapi #нажатие клавиши #логическое
Вопрос:
Я пишу приложение для Windows C , которое я хотел бы, чтобы оно определяло нажатие клавиши (для этого примера, используя букву «S»). При нажатии клавиши программа должна включать или выключать значение bool (в зависимости от ее текущего состояния).
Я знаю, что в консольных приложениях вы можете использовать cin.get
, но я незнаком с Win32 API. Я также хотел бы быть уверен, что при нажатии клавиши событие регистрируется только один раз, т. Е. если пользователь нажимает «S», но некоторое время удерживает клавишу нажатой, программа должна обнаружить только «S»; не «SSSSSSS».
Комментарии:
1. Пожалуйста, объясните, почему вы не хотите, чтобы автозапуск работал. Это игра, которую вы пишете?
2. Я пишу научный эксперимент. Я пытаюсь включить или выключить событие. Я не хочу, чтобы событие случайно включалось и выключалось одновременно, только один раз при нажатии кнопки.
Ответ №1:
Итак, у вас работает цикл сообщений Windows, верно? Захватите WM_KEYDOWN и проверьте, находится ли он в режиме автозапуска.
Но я бы предположил, что вы на самом деле используете фреймворк, будь то MFC, QT или что-то еще. Фреймворк завершит цикл обмена сообщениями Windows и позволит вам фиксировать ключевые события, но если вы хотите, чтобы мы рассказали вам, как это сделать, вам придется сказать, какой фреймворк вы используете.
Комментарии:
1. Возможно, глупый вопрос, но я понятия не имею, что такое фреймворк… Как мне узнать, что я использую? Я начал с рабочей программы и редактирую ее…
2. Подумайте: 1) Сообщите нам, какой компилятор / среду разработки вы используете. Я бы предположил, что одна из версий Visual Studio, но какая? 2) Изучение основ. Взгляните на различные результаты разных типов проектов ( msdn.microsoft.com/en-us/library/6765tta0 (v = vs.71).aspx ) и сравните с вашим примером проекта. 3) Принятие ответов на более чем 35% ваших вопросов по SO.