Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
#1

Вопрос по нажатию клавиш - C++

24.10.2009, 23:44. Просмотров 2971. Ответов 8
Метки нет (Все метки)

Смотрю книги и уроки по Си, но не в одной не чего не упоминается о такой вещи:
Например как сделать, что бы в консольном при нажатии например клавиши ENTER - выводилось например вы нажали клавишу ENTER , при нажатии например клавиши CTRL - выводилось например вы нажали клавишу CTRL

Типа

if (нажата клавиша ENTER)
{
cout<<"вы нажали клавишу ENTER ";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2009, 23:44     Вопрос по нажатию клавиш
Посмотрите здесь:

Закрытие программы по нажатию на клавишу (комбинацию клавиш) - C++
Хо! Есть код, который выполняет некие действия (без разницы вообще что, но главное - его нельзя зацикливать). Нужно чтоб по нажатию на...

Как сделать выход по нажатию клавиш - из графического и консольного режима? - C++
Делаю программу, в которой есть меню и есть графики, которые могут выводиться в зависимости от меню. Требуется сделать так, чтобы график...

Комбинация клавиш - C++
При нажатии комбинации CTRL+C нужно выполнить конкретную функцию. Не могу разобраться как это сделать. Создать функцию вроде как создал: ...

Номера клавиш - C++
Драсти, у меня возможно странный вопрос) : есть команда waitkey(10) - 10 это какая клавиша? а то в разных источниках по разному указано....

нажатие клавиш - C++
Что можно использовать вместо getch() чтобы программа не ждала нажатия клавиши а проверяла была ли нажата клавиша (только не bioskey)

Комбинация клавиш - C++
Что-то случилось со студией (VS2012-ULTIMATE). Когда нажимаю &quot;ctrl + f5&quot; при программировании на C++ окно закрывается (раньше не...

Case клавиш - C++
Подскажите пожалуйста, как мне узнать какие case у клавиш: w, a, s, d и пробела. Заранее спасибо.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
25.10.2009, 00:10     Вопрос по нажатию клавиш #2
nepster, потому что книги для начинающих. Смотри в сторону WinAPI
nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
25.10.2009, 00:57  [ТС]     Вопрос по нажатию клавиш #3
не чего не нашел =(
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
25.10.2009, 03:17     Вопрос по нажатию клавиш #4
Тебе нужно использовать функцию PostMessage или SendMessage
Они посылают окну сообщение.
Допустим,

PostMessage((HWND)DeskriptorOkna, WM_KEYDOWN, VK_RETURN, 0)
Посылает активному окну с таким-то дескриптором сообщение, что нажата клавиша (второй параметр), код которой VK_RETURN. Я уж не помню, по-моему, просто Enter.

Дескриптор окна ты найдёшь, подыми темы недели за две, я где-то писал.
Коды клавиш тоже в инете есть.
Дальше я не знаю.
Я писал прогу, которая посылает сообщение консольному окну, созданному ДРУГОЙ прогой.
А чтобы самому себе посылать сообщение- это надо какую-то оконную функцию писать. Типа цикл обработки сообщений и всё такое.
Могу дать ссылку, там на ассемблере, но всё довольно подробно. День потратишь на это дело, вроде оно того стоит, разберёшься то или не то. Если то, потом на С перекинешь всё. Смотри сам, короче.
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
25.10.2009, 08:46     Вопрос по нажатию клавиш #5
Если консольно, то можно использовать функцию getch() из библиотеки conio.h, она возвращает номер нажатой клавиши.
Например:
cout << getch(); - при нажатии кнопок будут отображаться их номера.
Сообщение "Нажата клавиша Enter" можно тогда сделать так:
C++
1
2
3
4
5
switch(getch())
{
 case 13: cout << "Нажали клавишу Enter"; break
 //сюда можно поместить и другие номера кнопок
}
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
25.10.2009, 10:57     Вопрос по нажатию клавиш #6
Цитата Сообщение от VtaMC Посмотреть сообщение
можно использовать функцию getch() из библиотеки conio.h, она возвращает номер нажатой клавиши.
деза
nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
25.10.2009, 11:03  [ТС]     Вопрос по нажатию клавиш #7
Большое спасибо, написал, вот все заработало


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
int main(void)
{
setlocale(LC_ALL,"Russian");
switch(getch())
{
 case 13:
 cout << "Нажали клавишу Enter"; 
 break;
}
}
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
25.10.2009, 11:18     Вопрос по нажатию клавиш #8
Неправильно ты написал.
Попробуй, поработай таким образом с клавишами от F1 до F12

Добавлено через 12 минут
Неправильно ты написал. Нужно более тщательно тестировать. Посмотри, что возвращает getch () при нажатии на какую-либо букву
C++
1
2
3
4
5
6
#include <stdio.h>
#include <conio.h>
int main () {
 printf ("%d",getch ());
 getchar ();
}
...А теперь посмотри, что она должна возвращать
http://netcode.ru/cpp/?lang=&katID=2...D=20&artID=234
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2009, 11:58     Вопрос по нажатию клавиш
Еще ссылки по теме:

Эмуляция клавиш - C++
Привет, вот не идёт в голову как до конца дописать код: if(GetAsyncKeyState(0x46)&amp;1) { keybd_event(VkKeyScan('A'), 0, 0, 0); ...

Считывание клавиш - C++
Функция из &lt;conio.h&gt; _getch(); обрабатывает кнопки , но только тогда , когда окно(консольное) активно. Как сделать считывание клавиш в...

Обработка клавиш! - C++
кароче не могу написать программу в консоле каторая, если нажата клавиша space то выводится сообщение что клавиша нажата!, а если опущена...

Переназначение клавиш - C++
У меня такая ситуация: я хочу, чтобы элементом массива в с++ было предложение, но программа не воспринимает пробел как часть элемента...

Нажатия клавиш - C++
В mfc нужно чтобы при нажатии клавиш, происходило действие. С помощью WM_KEYDOWN, пытался сделать, чтобы при нажатии клавиш программа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
25.10.2009, 11:58  [ТС]     Вопрос по нажатию клавиш #9
да точно, f1...f12 не работают
Yandex
Объявления
25.10.2009, 11:58     Вопрос по нажатию клавиш
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru