Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 142, средняя оценка - 4.64
xGravity
0 / 0 / 0
Регистрация: 03.01.2010
Сообщений: 42
#1

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

13.05.2010, 10:18. Просмотров 21618. Ответов 26
Метки нет (Все метки)

Помогите реализовать новичку перемещение курсора в консоли.Т.е. есть меню например
Создать базу
Редактировать
Удалить
И нужно передвигатся по нему курсором
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2010, 10:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перемещение курсора в консоли (C++):

Перемещение позиции курсора в консоли - C++
Приветы форумчанам, вопрос такой. Нужно переместить позицию курсора на произвольную позицию в консольном приложении. Есть ли такая функция...

Перемещение курсора - C++
Подскажите как передвинуть курсор в любую точку экрана по координатам x и y. Или каким нибуд другим способом?

Перемещение курсора - C++
Мне нужно сделать что-то типа интерфейса на консоли.Как задавать координаты курсора на консоли в С++?(в Паскале аналог gotoxy()). ...

Перемещение курсора в файле - C++
Здравствуйте! Пишу программу, где работаю с файлом с помощью потока, и понадобилось переместить курсор в начало строки, т.к. getline при...

перемещение курсора в файле - C++
как мне после первого цикла вернуть курсор в начала файла out? fseek ругает то, что первый элемент другого типа + без понятия количество...

Координаты курсора в консоли - C++
Существует аналог функции паскалевской GoToXY(x,y) - перемещает курсор по заданным координатам. Получается у меня задание такое, что надо...

26
qpMM
0 / 0 / 0
Регистрация: 03.08.2010
Сообщений: 31
04.08.2010, 22:33 #16
Пардон, а почему тогда у меня не получалось? О_о Тот же мой последний код.
0
neske
1503 / 870 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
04.08.2010, 22:37 #17
А вы попробуйте завести цикл
0
qpMM
0 / 0 / 0
Регистрация: 03.08.2010
Сообщений: 31
04.08.2010, 23:08 #18
А что изменяется, если я проверяю только одно условие?
0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
04.08.2010, 23:18 #19
qpMM, переменная c изменяется
0
Vladimir616
112 / 112 / 3
Регистрация: 05.07.2009
Сообщений: 224
08.08.2010, 11:48 #20
xGravity,
Вот накидал программку, передвигается курсором по пунктам "Создать базу", "Редактировать" и "Удалить".

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <windows.h>
#include <conio.h>
using std::cout;
 
int main()
{
    setlocale(LC_ALL, "rus");
    bool exit = false;
    int ch;
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD position = {0, 0};
    cout << (char)16 << "Создать базу \n Редактировать \n Удалить";
    SetConsoleCursorPosition(hConsole, position);
    while(!exit)
    {
        ch = _getch();
        switch(ch)
        {
            case 224:
            {
                switch(_getch())
                {
                    case 72:
                    {// нажата клавиша вверх
                        if(position.Y)
                        {
                            cout << " ";
                            position.Y--;
                            SetConsoleCursorPosition(hConsole, position);
                            cout << (char)16;
                            SetConsoleCursorPosition(hConsole, position);
                        }
                        break;
                    }
                    case 80:
                    {// нажата клавиша вниз
                        if(position.Y < 2)
                        {
                            cout << " ";
                            position.Y++;
                            SetConsoleCursorPosition(hConsole, position);
                            cout << (char)16;
                            SetConsoleCursorPosition(hConsole, position);
                        }
                        break;
                    }
                    default:
                        break;
                }
                break;
            }
            case 27:
            {
                exit = true;
                break;
            }
            default:
                break;
        }
    }
    return 0;
}
1
Vladimir616
112 / 112 / 3
Регистрация: 05.07.2009
Сообщений: 224
08.08.2010, 11:50 #21
Перемещение курсора в консоли
0
qpMM
0 / 0 / 0
Регистрация: 03.08.2010
Сообщений: 31
09.08.2010, 10:38 #22
А у меня вот так и курсор не двигается
0
Миниатюры
Перемещение курсора в консоли  
shbk
13 / 13 / 4
Регистрация: 29.10.2009
Сообщений: 71
28.06.2011, 03:59 #23
надо было человеку ncurses подсказать , а не слать в глушь
0
Bers
Заблокирован
28.06.2011, 08:51 #24
Цитата Сообщение от xGravity Посмотреть сообщение
Помогите реализовать новичку перемещение курсора в консоли.Т.е. есть меню например
Создать базу
Редактировать
Удалить
И нужно передвигатся по нему курсором
Понимаю вас)))
Кстати! Очень интересная вещь) Я сам когда то целую библиотеку сделал для управления консолью)
Можно было выводить цветной текст в любой точке консоли, вводить данные в консоль без нажатия ентер) Можно было ткнуть мышкой в центре консоли, и там менюшка откроется)

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

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

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

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

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

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

http://vsokovikov.narod.ru/New_MSDN_API/Console/con_fn.htm

Вот с этой последней ссылочки я и достал практически все, что мне нужно было знать о консоли.Фактически, на этой одной страничке обозначен весь интерфейс стандартной консоли Виндовс. Как видите, функций не много. И изучить их все - дело 1-2 дней если не напрягаться.
0
Egor138
32 / 13 / 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;
}
Подскажите где вы коды к кнопкам брали
0
DU
1483 / 1129 / 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;
      }
    }
  }
1
Egor138
32 / 13 / 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;
}
Если я удерживаю стрелку циклом выводятся надписи. Как этого избежать. Чтобы когда я нажал и удерживал стрелку вывод произожел один раз???
0
20.08.2012, 22:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2012, 22:17
Привет! Вот еще темы с ответами:

Смещение курсора по консоли - C++
Всем привет! Я работаю в программе dev c++. И мне нужна помощь,чтобы определенный символ я смог переместить в любое место консоли...

Построчное перемещение курсора в текстовом файле - C++
Кусочек кода, см. комментарии switch(flag) { case'1': { f=fopen(value, &quot;r&quot;); //Открываем необходимый файл if...

Перемещение курсора мыши на заданные координаты и клик - C++
Добрый день. Подскажите, пожалуйста, как можно реализовать сабж. Гугление выдает некоторые варианты, но ни один из примеров не...

Перемещение текстового курсора вверх (анти endl;) - C++
Есть ли опрератор,который работает противоположно endl;?Тобиш мне нужен пробел не в низ,а вверх.


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Опции темы

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