Главное меню Клавиша C ++ - PullRequest
0 голосов
/ 01 июля 2019

Я создаю простую консольную программу на C ++ и ищу способ, позволяющий пользователю в любой момент вернуться к выводу «Основное меню», если он нажмет функциональную клавишу, например, F1 или F2.

Могу ли я в любой момент иметь программу, готовую принять эту клавишу, в любое время, или мне нужно иметь оператор switch, который может вызывать функцию печати «Main Menu» каждый раз, когда программа принимает ввод пользователя?Возможно, это что-то, что недоступно для консольной программы?

РЕДАКТИРОВАТЬ: На данный момент я работаю только с Windows-программой.

1 Ответ

1 голос
/ 01 июля 2019

Если вы используете Windows:

Вы можете использовать GetKeyState или GetAsyncKeyState, но это не даст вам события keydown / keyup.Он только скажет вам, какие ключи в данный момент недоступны.

Так что, если вам нужно получить события keydown / keyup, вы можете установить ловушку.Окно консоли имеет дескриптор окна, который принадлежит коду в Windows, и насос сообщений, также принадлежащий коду в Windows.

Вы можете получить дескриптор окна окна консоли, используя GetConsoleWindowT, тогда установите хук WH_CALLWNDPROCиспользуя SetWindowsHookEx для прослушивания сообщений, отправляемых в окно консоли.

Вместо этого вы можете использовать хук WH_MSGFILTER.Я не знаю, работает ли это для консольных окон, но оно будет генерировать меньше сообщений, которые будут игнорироваться, если оно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...