Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
#1

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

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

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

Типа

if (нажата клавиша ENTER)
{
cout<<"вы нажали клавишу ENTER ";
}
http://www.cyberforum.ru/cpp-beginners/thread1592247.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2009, 23:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вопрос по нажатию клавиш (C++):

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

Работа с клавиатурой, сочетания клавиш, блокировка клавиш
Здравствуйте! Есть такая вот задачка: Разработать программу обработки...

Действия по нажатию клавиш
Возможноли заставить программу реагировать на нажатие клавиш? ну тоесть &quot;если...

Событие по нажатию клавиш
привет, друзья! в Excel необходимо выполнять бесконечную программу: Code1,...

Событие по нажатию сочетания клавиш
Добрый день, имеется код который по нажатию клавиш (Q+W) запускает некоторую...

8
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
25.10.2009, 00:10 #2
nepster, потому что книги для начинающих. Смотри в сторону WinAPI
1
nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
25.10.2009, 00:57  [ТС] #3
не чего не нашел =(
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
25.10.2009, 03:17 #4
Тебе нужно использовать функцию PostMessage или SendMessage
Они посылают окну сообщение.
Допустим,

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

Дескриптор окна ты найдёшь, подыми темы недели за две, я где-то писал.
Коды клавиш тоже в инете есть.
Дальше я не знаю.
Я писал прогу, которая посылает сообщение консольному окну, созданному ДРУГОЙ прогой.
А чтобы самому себе посылать сообщение- это надо какую-то оконную функцию писать. Типа цикл обработки сообщений и всё такое.
Могу дать ссылку, там на ассемблере, но всё довольно подробно. День потратишь на это дело, вроде оно того стоит, разберёшься то или не то. Если то, потом на С перекинешь всё. Смотри сам, короче.
1
VtaMC
Просто Веталь
160 / 100 / 22
Регистрация: 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
 //сюда можно поместить и другие номера кнопок
}
2
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
25.10.2009, 10:57 #6
Цитата Сообщение от VtaMC Посмотреть сообщение
можно использовать функцию getch() из библиотеки conio.h, она возвращает номер нажатой клавиши.
деза
0
nepster
61 / 61 / 11
Регистрация: 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;
}
}
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
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&skatID=20&artID=234
1
nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
25.10.2009, 11:58  [ТС] #9
да точно, f1...f12 не работают
0
25.10.2009, 11:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2009, 11:58
Привет! Вот еще темы с решениями:

Движение квадрата по нажатию клавиш
Составьте программу по следующему сценарию: на экране нарисован квадратик. При...

Движение треугольника по нажатию клавиш
Надо рисовать треугольник . при нажатие клавиш w треуголник должно двигатся...

Действия по нажатию клавиш на клавиатуре
Всем Доброго времени суток. При видите пожалуйста пример программирования...

Движение точки по нажатию клавиш
Упростил программу, чтобы хотя бы при нажатии одной клавиши (w) точка...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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