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

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

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

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

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

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

Типа

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

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

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

Дескриптор окна ты найдёшь, подыми темы недели за две, я где-то писал.
Коды клавиш тоже в инете есть.
Дальше я не знаю.
Я писал прогу, которая посылает сообщение консольному окну, созданному ДРУГОЙ прогой.
А чтобы самому себе посылать сообщение- это надо какую-то оконную функцию писать. Типа цикл обработки сообщений и всё такое.
Могу дать ссылку, там на ассемблере, но всё довольно подробно. День потратишь на это дело, вроде оно того стоит, разберёшься то или не то. Если то, потом на С перекинешь всё. Смотри сам, короче.
VtaMC
Просто Веталь
159 / 99 / 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
быдлокодер
1695 / 874 / 44
Регистрация: 04.06.2008
Сообщений: 5,338
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
быдлокодер
1695 / 874 / 44
Регистрация: 04.06.2008
Сообщений: 5,338
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++ Нажатие клавиш
C++ Считывание клавиш
Работа с клавиатурой, сочетания клавиш, блокировка клавиш C++
Закрытие программы по нажатию на клавишу (комбинацию клавиш) C++
Как сделать выход по нажатию клавиш - из графического и консольного режима? C++

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

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

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