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

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

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

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

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

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

Типа

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

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

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

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

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

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

Движение треугольника по нажатию клавиш - Turbo Pascal
Надо рисовать треугольник . при нажатие клавиш w треуголник должно двигатся вверх. s- вниз, a-в лево , d- в право..

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
25.10.2009, 00:10 #2
nepster, потому что книги для начинающих. Смотри в сторону WinAPI
1
nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
25.10.2009, 00:57  [ТС] #3
не чего не нашел =(
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
25.10.2009, 03:17 #4
Тебе нужно использовать функцию PostMessage или SendMessage
Они посылают окну сообщение.
Допустим,

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

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

Рисование фигур по нажатию клавиш. - Turbo Pascal
Написать программу, чтобы при нажатии клавиши &quot;р&quot; рисовала бы круг, при нажатии клавиши &quot;Ь&quot; рисовала бы прямоугольник, при нажатии клавиши...

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

Событие по нажатию сочетания клавиш - JavaScript
Добрый день, имеется код который по нажатию клавиш (Q+W) запускает некоторую функцию ( данном примере alert(&quot;Привет!&quot;); : &lt;script&gt; ...

Поворот объекта по нажатию клавиш - OpenGL
Попытался реализовать поворот по нажатию на стрелки, но эффекта нет, может кто подскажет как надо сделать его?? #include &quot;Cube.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.10.2009, 11:58
Ответ Создать тему
Опции темы

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