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

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

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

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

Типа

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

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

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

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

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

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

8
M128K145
Эксперт JavaЭксперт С++
8324 / 3544 / 420
Регистрация: 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
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
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
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
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
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
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

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

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

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


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

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

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