Распознавание Клавиш(Стрелки) в C++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Autom, 5 Jan 2011.

  1. Autom

    Autom New Member

    Joined:
    29 Jun 2010
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Можете подсказать, как узнавать какая нажата стрелка на клавиатуре.
     
  2. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Название темы должно выражать суть вопроса... (На будущее)
    А так ничего сложного, если правильно понял, то все делается через Win API
    Коды _http://api.farmanager.com/ru/winapi/virtualkeycodes.html
    Коды2 _http://wdh.suncloud.ru/keycodes.htm
    Пример того что нужно _http://www.cyberguru.ru/cpp-sources/hardware/obnaruzhenie-nazhatiya-klavish.html
    Еще один пример того что нужно _http://www.cyberguru.ru/cpp-sources/hardware/rabota-s-klaviaturoj-page2.html



    Вырезка:





    Еще одна ссылка:

    _http://www.makak.ru/2008/03/06/kak-opredelit-nazhata-li-klavisha-kak-uznat-vklyuchen-li-num-lock-na-c/ (тут же находится вырезка)


    Откуда ссылки? первые ссылки из гугла.
    Для таких вопросов существуют закрепленные темы.
    Удачи :)
     
    2 people like this.
  3. Edward

    Edward Banned

    Joined:
    11 Feb 2010
    Messages:
    329
    Likes Received:
    21
    Reputations:
    -1
    Простой способ:

    Code:
    #include <iostream>
    #include <conio.h>
    
    int main( int argc, char *argv[] ) {
    	setlocale( 0, "rus" );
    	char symbol = _getch();
    
    	while( ( symbol = _getch() ) ) {
    		switch( symbol ) {
    			case 72:
    				std::cout << "Вверх\n";
    				break;
    			case 75:
    				std::cout << "Вниз\n";
    				break;
    			case 77:
    				std::cout << "Вправо\n";
    				break;
    			case 80:
    				std::cout << "Влево\n";
    				break;
    			default: 
    				break;
    		}
    	}
    
    	return 0;
    }
    
    De-visible, гы.
     
    1 person likes this.
  4. Autom

    Autom New Member

    Joined:
    29 Jun 2010
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Edward, а что обозначает оператор setlocale?
    И что обозначает _ перед оператором getch()?
     
  5. Edward

    Edward Banned

    Joined:
    11 Feb 2010
    Messages:
    329
    Likes Received:
    21
    Reputations:
    -1
    спользуется для установки кодировки консоли, в нашем случае для использования русского языка в консоли.

    Это та же getch(), только насколько я помню что то вроде новой его версии :)
     
  6. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    ANCI C стандарт
     
  7. Autom

    Autom New Member

    Joined:
    29 Jun 2010
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    В смысле новая версия?
    Я еще видел исходники, где перед оператором пишется две _, те __getch().
    Какая между ними разница? И если я буду компилировать твою прогу, будет работать так же, даже если я буду писать без _?