Автор User51942 задал вопрос в разделе Другие языки и технологии
C++. Как перехватывать нажатия клавиш и обрабатывать их? и получил лучший ответ
Ответ от Андрей Журавлев[гуру]
bool keys[256];
<...>
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
<...>
case WM_KEYDOWN:
{
keys[wParam] = true;
return 0;
}
case WM_KEYUP:
{
keys[wParam] = false;
return 0;
}
<...>
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
<...>
ну а как в массиве узнать нажата или нет клавиша я думаю разберетесь...
хотя можно и без массива... сразу вызывать функцию в которую передадите информацию о нажатой клавише... ну или еще один кейс запилите и вызывайте сразу нужную функцию... в общем извращайтесь как хотите...
Ответ от Андрей Власов[гуру]
Можно перехватить прерывание 09h
Можно перехватить прерывание 09h
Ответ от Krab Bark[гуру]
Нужно анализировать скэн-коды клавиш. Пример: будет печатать названия нажатых клавиш со стрелками, при нажатии других клавиш выполнение заканчивается:
#include "iostream"
#include "conio.h"
using namespace std;
int main(){
const int U=72,L=75,D=80,R=77,E=224;
while(true){
if(getch()==E){
switch(getch()){
case U: cout<<"UP"; break;
case D: cout<<"DOWN"; break;
case L: cout<<"LEFT"; break;
case R: cout<<"RIGHT"; break;}}
else return 0;
cout<< endl;}}
Нужно анализировать скэн-коды клавиш. Пример: будет печатать названия нажатых клавиш со стрелками, при нажатии других клавиш выполнение заканчивается:
#include "iostream"
#include "conio.h"
using namespace std;
int main(){
const int U=72,L=75,D=80,R=77,E=224;
while(true){
if(getch()==E){
switch(getch()){
case U: cout<<"UP"; break;
case D: cout<<"DOWN"; break;
case L: cout<<"LEFT"; break;
case R: cout<<"RIGHT"; break;}}
else return 0;
cout<< endl;}}
Ответ от Alex Nikulin[новичек]
В языке программирования D можно юзать функцию WinAPI GetAsyncKeyState. Она асинхронная, то есть после ее вызова код продолжает выполняться, даже, если не нажата никакая клавиша.
Правда, эта функция работает при нажатии клавиши не только в вашем окне, но и в других окнах! Так что нужно проверять, активно ли окно вашей программы, с помощью функции GetForegroundWindow.
В языке программирования D можно юзать функцию WinAPI GetAsyncKeyState. Она асинхронная, то есть после ее вызова код продолжает выполняться, даже, если не нажата никакая клавиша.
Правда, эта функция работает при нажатии клавиши не только в вашем окне, но и в других окнах! Так что нужно проверять, активно ли окно вашей программы, с помощью функции GetForegroundWindow.
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: C++. Как перехватывать нажатия клавиш и обрабатывать их?
спросили в Кальв
Подскажите какой-нибудь рецепт приготовления баклажанов в микроволновке..
Вот - по-проще и по-сложнее:
Можно есть как горячее, так и холодное.
Берем баклажан. Любого
подробнее...
Подскажите какой-нибудь рецепт приготовления баклажанов в микроволновке..
Вот - по-проще и по-сложнее:
Можно есть как горячее, так и холодное.
Берем баклажан. Любого
подробнее...
Посоветуйте, быстрые и лёгкие салаты, с минимумом затрат
"Цезарь" - поистине королевский салат.
Куриную грудку порезать кубиками.
Мелко
подробнее...
приготовление плова
Плов. Ингредиенты
* 1.5 кг мяса (баранины, свинины или говядины)
* 1 кг риса
подробнее...