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

Перемещение курсора в консоли - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 142, средняя оценка - 4.64
xGravity
0 / 0 / 0
Регистрация: 03.01.2010
Сообщений: 42
13.05.2010, 10:18     Перемещение курсора в консоли #1
Помогите реализовать новичку перемещение курсора в консоли.Т.е. есть меню например
Создать базу
Редактировать
Удалить
И нужно передвигатся по нему курсором
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vladimir616
110 / 110 / 3
Регистрация: 05.07.2009
Сообщений: 224
08.08.2010, 11:50     Перемещение курсора в консоли #21
Перемещение курсора в консоли
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
qpMM
0 / 0 / 0
Регистрация: 03.08.2010
Сообщений: 31
09.08.2010, 10:38     Перемещение курсора в консоли #22
А у меня вот так и курсор не двигается
Миниатюры
Перемещение курсора в консоли  
shbk
13 / 13 / 4
Регистрация: 29.10.2009
Сообщений: 71
28.06.2011, 03:59     Перемещение курсора в консоли #23
надо было человеку ncurses подсказать , а не слать в глушь
Bers
Заблокирован
28.06.2011, 08:51     Перемещение курсора в консоли #24
Цитата Сообщение от xGravity Посмотреть сообщение
Помогите реализовать новичку перемещение курсора в консоли.Т.е. есть меню например
Создать базу
Редактировать
Удалить
И нужно передвигатся по нему курсором
Понимаю вас)))
Кстати! Очень интересная вещь) Я сам когда то целую библиотеку сделал для управления консолью)
Можно было выводить цветной текст в любой точке консоли, вводить данные в консоль без нажатия ентер) Можно было ткнуть мышкой в центре консоли, и там менюшка откроется)

Можно было сделать игрушку "змейка" и управлять змейкой как кнопками, так и мышкой)

В консоли можно даже пиксельную графику рисовать. Кружочки там, точечки)
Можно вывести в консоль картинку bmp.

Я понимаю, что на самом деле консоль не предназначена для таких забав) Но когда-то, когда я только-только изучал с++, я вот что только не творил с этой многострадальной консолью.
Я даже мультики в ней на экран выводил))

К сожалению, за ненадобностью эта библиотека-обертка "консоль" где-то у меня уже затерялась.
Но на самом деле, нечто подобное сделать - ничего сложного.

Вот здесь все о консоли "из первых рук"
http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx

А вот здесь примерно тоже самое, только на русском языке.

http://vsokovikov.narod.ru/New_MSDN_...ole/con_fn.htm

Вот с этой последней ссылочки я и достал практически все, что мне нужно было знать о консоли.Фактически, на этой одной страничке обозначен весь интерфейс стандартной консоли Виндовс. Как видите, функций не много. И изучить их все - дело 1-2 дней если не напрягаться.
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
17.08.2012, 20:11     Перемещение курсора в консоли #25
Цитата Сообщение от neske Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <conio.h>
#include <windows.h>
 
int main()
{
        int x=0, y=0;
        int step=10;
        char c;
 
        SetCursorPos(x, y);
        do {
                c=getch();
                switch(c){
                        case 75: SetCursorPos(x-=step, y); std::cout << "LEFT.\n"; break;
                        case 77: SetCursorPos(x+=step, y); std::cout << "RIGHT.\n"; break;
                        case 72: SetCursorPos(x, y-=step); std::cout << "UP.\n"; break;
                        case 80: SetCursorPos(x, y+=step); std::cout << "DOWN.\n"; break;
                }
        } while(c != 27); // Esc
 
        system("pause");
        return 0;
}
Подскажите где вы коды к кнопкам брали
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
17.08.2012, 21:27     Перемещение курсора в консоли #26
нажимаете кнопку, смотрите какой код. делов то.
C++
1
2
3
4
5
for(;;)
{
  int c=getch();
  std::cout << "code = " << c << std::endl;
}
Помню, что для спец кнопок иногда нужно два раза взять символ. в частности это про стрелки.
вот у меня завалялся примерно такой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  for (;;)
  {
    int ch = getch();
    if (ch == -32) // magic value // вот тут эта магия с двойным взятием введенного симсола проявляется
      ch = getch();
 
    switch (ch)
    {
      case 72 : // up
      {
        break;
      }
 
      case 75 : // left
      {
        break;
      }
 
      case 77 : // right
      {
        break;
      }
 
      case 80 : // down
      {
        break;
      }
 
      case 13 : // enter
      {
        break;
      }
 
      case 27 : // escape
      {
        break;
      }
    }
  }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2012, 22:17     Перемещение курсора в консоли
Еще ссылки по теме:

Перемещение курсора C++
C++ Координаты курсора в консоли
Перемещение текстового курсора вверх (анти endl;) C++

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

Или воспользуйтесь поиском по форуму:
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
20.08.2012, 22:17     Перемещение курсора в консоли #27
Цитата Сообщение от neske Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <conio.h>
#include <windows.h>
 
int main()
{
        int x=0, y=0;
        int step=10;
        char c;
 
        SetCursorPos(x, y);
        do {
                c=getch();
                switch(c){
                        case 75: SetCursorPos(x-=step, y); std::cout << "LEFT.\n"; break;
                        case 77: SetCursorPos(x+=step, y); std::cout << "RIGHT.\n"; break;
                        case 72: SetCursorPos(x, y-=step); std::cout << "UP.\n"; break;
                        case 80: SetCursorPos(x, y+=step); std::cout << "DOWN.\n"; break;
                }
        } while(c != 27); // Esc
 
        system("pause");
        return 0;
}
Если я удерживаю стрелку циклом выводятся надписи. Как этого избежать. Чтобы когда я нажал и удерживал стрелку вывод произожел один раз???
Yandex
Объявления
20.08.2012, 22:17     Перемещение курсора в консоли
Ответ Создать тему
Опции темы

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