|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.03.2012, 13:07 | #1 |
Пользователь
Регистрация: 19.02.2012
Сообщений: 60
|
Коды клавиш
Добрый день!
Я написал некую программу, которая увеличивает или уменьшает определенное число с помощью клавиш влево и вправо (только их можно использовать по условию) Код:
Суть в том, что при нажатии клавиш Shift+M и Shift+K совершаются аналогичные действия, то есть у них совпадают коды. Это нужно исключить. Суть вопроса: как определить нажатие и удержание клавиши SHIFT и, если она удерживается, перескочить в другое место (goto например) Ах да, left/right arrow это definitions 75 и 77 соответственно Если что-то не понятно - задавайте вопросы, могу более расширенный участок кода показать. Мне не нужно писать полностью решение, лишь подсказать путь/функцию, которая бы показывала, удерживается шифт, или нет Последний раз редактировалось Elloriane; 16.03.2012 в 13:55. Причина: никто не откликается |
16.03.2012, 14:23 | #2 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
const int SHIFTED = 0x8000;
((GetKeyState(VK_SHIFT)&SHIFTED)!=0 ) - клавиша нажата(правая или левая) VK_LSHIFT - левая VK_RSHIFT - правая
Знающий не говорит, говорящий не знает (С) Лао Цзы
|
16.03.2012, 18:13 | #3 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
|
20.03.2012, 13:13 | #4 |
Пользователь
Регистрация: 19.02.2012
Сообщений: 60
|
Спасибо, пробую
Второй вариант не подошел, т.к. вся картина перестает реагировать на какое-либо нажатие А вот первый - требует: Header winuser.h Library Kbdui.lib Если h. файл у меня есть, то библиотеки нету, можно как-то обойтись без доп. библиотек? Последний раз редактировалось Stilet; 20.03.2012 в 23:09. |
20.03.2012, 13:47 | #5 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
|
20.03.2012, 13:52 | #6 |
Пользователь
Регистрация: 19.02.2012
Сообщений: 60
|
Верно, я воспользовался поиском, потому что VK_LSHIFT и подобные функции компилятор не смог прочитать (подумал, мол нужен какой-то #include)
ссылка: http://msdn.microsoft.com/en-us/library/aa932743.aspx инклуд не заработал, было много ошибок в самом файле - я решил подключить в ресурсы библиотеку (из ссылки), а у меня её нету в каталоге. Или я просто совсем Вас не понял? |
20.03.2012, 14:02 | #7 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Для варианта предложенного Krock27
нужно #include <windows.h> Библиотека User32.lib в которой определена функция GetKeyState у Вас должна быть. Всякие студии подключают ее по умолчанию. Но прочитав фразу: Цитата:
|
|
20.03.2012, 14:19 | #8 |
Пользователь
Регистрация: 19.02.2012
Сообщений: 60
|
Всё заработало с windows.h , спасибо вам обоим, но хотелось бы разобраться с Вашим вариантом, EUGY.
Он работает, но без ведомой причины (по крайней мере я не понимаю, потому cleardevice() стоит после этого условия) экран становится черным и картинка обновляется если перейти (кликнуть) на смд окно и назад. Однако при Shift + M итерация не меняется! (т.е. идея сработала) |
20.03.2012, 14:31 | #9 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Я не вижу всей картины. Покажите что из себя представляет readkey() и вкратце как сделан главный цикл.
Всё заработало с windows.h - Очень рад. Но вообще я бы не стал вводить новые сущности без необходимости. (это так- принцип экономии). |
20.03.2012, 14:34 | #10 |
Пользователь
Регистрация: 19.02.2012
Сообщений: 60
|
есть только один минус у Вашего варианта - по esc нужно выходить (:
поэтому он выйдет чуть дольше, если вам интересно - я могу отправить вам письмом программу, чтобы Вы поняли о чем речь |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
коды функ. клавиш | XemyL | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 24.04.2011 01:08 |
коды клавиш на ТС | alex(21) | Общие вопросы C/C++ | 1 | 13.11.2009 10:23 |
коды клавиш-? | Evgenii | Общие вопросы Delphi | 8 | 28.10.2009 22:00 |
Коды клавиш | valerij | Microsoft Office Excel | 0 | 20.08.2008 07:49 |
Коды клавиш | KAMASUTR | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 11 | 09.08.2007 22:25 |