Я хочу написать функцию, в которой при нажатии «esc» окно должно закрываться, дело в том, что функция должна быть записана в c. Я новичок в программировании с помощью любой помощи.Как закрыть окно, нажав «esc» в c?
ответ
Нет стандартного способа немедленного реагирования на вход в C - клавиша ESC ничем не отличается от буквы «A» или «x» в этом отношении - вход не передается программе, пока пользователь не нажмет Enter , Иногда еще одно осложнение заключается в том, что ESC используется для особых целей, например, приложение командной строки Windows использует ESC для «стирания, все, что я набрал до сих пор», что делает невозможным чтение даже с помощью «ESC + Enter».
Таким образом, вам необходимо использовать системные функции, которые могут считывать «сырые» данные с клавиатуры, а не обычные «приготовленные» данные, которые вы используете с помощью стандартных функций ввода-вывода (например, getchar()
).
Существуют независимые от ОС параметры, такие как ncurses
, которые поставляются для консольных приложений. В Windows вы можете использовать getch()
после включения conio.h
, но это нестандартная библиотека, и она работает только в консольном приложении.
В оконной среде это случай ответа на событие клавиатуры, а «if key == ESCAPE close_window» - именно то, как вы это делаете, зависит от используемой системы окон и используемой структуры.
Я второй downvote. Мое объяснение в том, что ваш ответ ужасен. ESC - это значение ASCII 27. Когда вы используете '' 'getchar()' '', это будет значение 27 десятичных знаков, которое вы ищете. Это вряд ли получится проще. Проблема в том, что вы создаете материал, который кажется более сложным, чем на самом деле, несколько стереотипным результатом. Кажется, вы думаете, что Esc - это специальная клавиша клавиатуры, а не код символа ASCII. Esc больше не является чем-то особенным, чем M. –
@HeathHunnicutt: На самом деле вы думаете, что исходный плакат означает «ESC + enter» или «нажмите« ESC ». Насколько я могу судить, последнее не возможно со стандартным C. Первое возможно - предполагая, что ESC не «израсходован» самой обработкой ввода клавиатуры, что имеет тенденцию иметь место в Windows, поскольку это означает «Стереть всю строку» - и, таким образом, нажатие ESC в коде командной строки Windows не работает. Но я буду перефразировать ответ, чтобы более точно описать сценарий, который «невозможен» для вашей выгоды. –
OP даже не указывает, какую ОС. Если вы хотите принять буферизацию строк, это вы. Если вы предполагаете буферизацию строк, вы можете также упомянуть stty(), очевидное решение вашей концепции «невозможно». Что касается поведения Windows, вы, кажется, вызываете FUD. –
Ну, для Windows:
GetActiveWindow или GetFocus, чтобы получить окно, в центре внимания.
GetASyncKeyState, чтобы захватить кнопку выхода.
SendMessage закрыть соответствующее окно.
Если вы хотите что-то любитель, чем GetAsyncKeyState (который не является надежным и дорогим процессором в бесконечном цикле), вы можете сделать что-то относительно сложный на первый взгляд: global keyboard hooks in c
void myfunc(){
char ch;
do{
//do what you want here
ch=getchar();
}while(ch!='27'); //27 is the ascii code for esc
}
Что делать, если моя система не использует ASCII и использует вместо нее EBCDIC? – user93353
- 1. как закрыть приложение, нажав только Esc. ключ в C# .Net
- 2. Закрыть меню, нажав меню и ESC
- 3. закрыть окно поиска, нажав нестандартно
- 4. Закрыть всплывающее окно с ключом Esc
- 5. Как закрыть окно, нажав кнопку ОТМЕНА?
- 6. Как закрыть окно в C#
- 7. Закрыть окно с калиткой, нажав кнопку
- 8. Закрыть Меню JS на ESC
- 9. Python Selenium: Как отправить клавишу ESC, чтобы закрыть всплывающее окно?
- 10. как закрыть диалоговое окно Esc и открыть его снова селен
- 11. Закрыть PrintPreviewDialog при нажатии ESC
- 12. как закрыть диалоговое окно, в пакетном файле, нажав кнопку OK
- 13. Как закрыть окно, нажав кнопку, расположенную в шаблоне управления
- 14. C# Закрыть окно формы
- 15. JAVA AWT, как я могу закрыть окно, нажав кнопку
- 16. Bootstrap Tour - Как закрыть всплывающее окно, нажав кнопку закрытия?
- 17. Как закрыть окно окна Windows в C#?
- 18. Как закрыть диалоговое окно в Objective C
- 19. Отключить Esc закрыть для colorbox
- 20. Как закрыть программу, нажав кнопку?
- 21. Как закрыть элемент на кнопке esc?
- 22. Как закрыть складной, нажав кнопку
- 23. Как закрыть диалоговое окно jquery?
- 24. Как закрыть домашнее окно
- 25. Закрыть окно Opencv, используя кнопку Close
- 26. (UWP) Использование ESC Key Закрыть MODALDIALOG
- 27. WPF C# Закрыть окно onclick
- 28. JQuery Toogle на ESC и нажав
- 29. Как закрыть стартовое окно
- 30. Как закрыть родительское окно?
C не имеет окон, или ключи. –
Это помогло бы плакатам, если бы вы могли дать больше информации о том, что вы делаете - какие ОС, рамки и т. Д. Кроме того, люди здесь ценят это, если человек, задающий вопрос, по крайней мере, должен решить проблему. Сделайте некоторые исследования самостоятельно, попробуйте что-нибудь, и если вы все еще застряли, вставьте код здесь. Люди будут рады помочь. – Nobilis
Пожалуйста, разместите свою ОС - как это делается в Windows и UNIX/Linux значительно отличается. И поскольку @KerrekSB сказал, что на самом деле нет «ключей» в C. –