Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 89

Обновление определенной координаты консоли, а не всей в С++

02.03.2019, 14:48. Показов 3224. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня назрел такой вопрос, бегая по просторам интернета, я нашел такую ЗАМЕЧАТЕЛЬНУЮ функцию как cls;
она прекрасна, только вот не подходит, далее нашел что-то на подобии этого:
C++
1
2
3
4
5
6
7
void setcur(int x, int y)
{ 
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
всё бы хорошо да вот только увы нет, обновляет тоже весь экран но по координатно, пробывал. как не крутил, танцевал с бубном возле холодильника , так эта микроволновка и не завелась, никак не выходит чтоб оно обновляло какую-то часть экрана, от части я понимаю что ничего не понимаю, но в нетике(кривые ручки) не нашли ничего дельного про сию функцию, можете пожалуйста подсказать/написать, алгоритм или код чтоб обновлялась та точка, которая мне нужна, а не вся консоль.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.03.2019, 14:48
Ответы с готовыми решениями:

Мгновенное обновление всей консоли
При обновлении небольшой области консоли очень хорошо помогает SetConsoleCursorPosition, однако, если нужно быстро обновить всё окно,...

Использование всей консоли для вывода
Почему когда печатается последний символ в консоли то курсор переходит на новую строку? Добавлено через 6 минут Вот код ...

Обновление div отдельно от всей страницы
Имеется страница, в ней есть такой кусок кода: <div class="logging"> <?php $f =...

13
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
02.03.2019, 15:23
Используйте функцию WriteConsole
0
Заблокирован
02.03.2019, 15:24
Цитата Сообщение от Lepricon228 Посмотреть сообщение
увы нет, обновляет тоже весь экран
каким образом?
0
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 89
02.03.2019, 19:03  [ТС]
каким образом?
Обновляет весь экран но по координатно, в плане в консоли 80 единиц ширины, и 25 высоты, он обновляет с 0 каждый раз всю консоль, это почти не видно но на тексте иногда буковки пропадают на милисекунды, посему не приятно.

Используйте функцию WriteConsole
Спасибо, чуть позже попробую отпишу.

Добавлено через 2 часа 47 минут
Промучавшись около часа я так и не понял как оно работает(дурачек...ой, начинающий), можете написать пример обновления с коментариями?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
02.03.2019, 19:04
Есть ли какие то статьи про графику в DOS?
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
02.03.2019, 20:23
Lepricon228, можно еще здесь посмотреть: Как работать с WriteConsoleOutput? (последние посты)
0
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 89
02.03.2019, 22:00  [ТС]
Я конечно всё понимаю, но этого я не понимаю,
Цитата Сообщение от DrOffset Посмотреть сообщение
Lepricon228, можно еще здесь посмотреть: Как работать с WriteConsoleOutput? (последние посты)
там код на 100+ строк, я ничего не понял из того что там есть, кроме структуры и инициализации интов,
Цитата Сообщение от Croessmah Посмотреть сообщение
Есть ли какие то статьи про графику в DOS?
ваш код полегче, но увы всё равно сложно и не понятно, я видел у человечка код на 5 строк, с этой функцией WriteConsole он перекидывал в неё x и y и оно работало, и это все выходило максимум ан 5 строк, а тут ничего не понятно + очень много всего, может быть я просто зеленоват для сего добра?
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
03.03.2019, 00:50
Цитата Сообщение от Lepricon228 Посмотреть сообщение
может быть я просто зеленоват для сего добра?
Собственно там почти готовый класс, для рисования всякого - его можно просто использовать, не вникая.
Но раз так, то в той же теме рекомендовали книгу, возможно вам она лучше поможет.
0
Заблокирован
03.03.2019, 07:31
Лучший ответ Сообщение было отмечено Lepricon228 как решение

Решение

Цитата Сообщение от Lepricon228 Посмотреть сообщение
Обновляет весь экран но по координатно, в плане в консоли 80 единиц ширины, и 25 высоты
и что же заставляет void setcur(int x, int y) 2000 раз заниматься этим?

Добавлено через 54 минуты
гоняет символ по всему полю
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
.........
#include <windows.h>
#include <conio.h>
.........
void main(int argc,char **argv)
{
    HANDLE hnd=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD xy={40,12},oldxy={0,0};
    unsigned char ch=0;
    do
    {
        if(_kbhit())
            if((ch=_getch())==224)
            {
                ch=_getch();
                if(ch=='K' && xy.X-1>-1) xy.X--;
                if(ch=='M' && xy.X+1<80) 
                    if(!(xy.X==78 && xy.Y==24)) xy.X++;
                if(ch=='H' && xy.Y-1>-1) xy.Y--;
                if(ch=='P' && xy.Y+1<25) 
                    if(!(xy.X==79 && xy.Y==23)) xy.Y++;
            }
        if(oldxy.X!=xy.X || oldxy.Y!=xy.Y)
        {
            SetConsoleCursorPosition(hnd,oldxy);
            cout<<' ';
            SetConsoleCursorPosition(hnd,xy);
            cout<<'*';
            oldxy=xy;
        }
        Sleep(50);
    }while(ch!=27);
1
 Аватар для vlisp
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
03.03.2019, 10:17
turbo vision? не, не слышал
0
35 / 28 / 8
Регистрация: 01.03.2019
Сообщений: 135
03.03.2019, 10:29
Lepricon228,
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
#include <iostream>
#include <windows.h>
 
void set_char(int c, int x, int y)
{
    HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO info;
    GetConsoleScreenBufferInfo(console, &info);
 
    COORD coord = { x, y };
    SetConsoleCursorPosition(console, coord);
    std::cout << (char)(c);
    SetConsoleCursorPosition(console, info.dwCursorPosition);
}
 
int main()
{
    //Draw rectangle
    int n = 10;
    for (int i = 0; i < n; i++)
    {
        set_char('*', i, 0);
        Sleep(500);
        set_char('*', i, n - 1);
        Sleep(500);
        set_char('*', 0, i);
        Sleep(500);
        set_char('*', n - 1, i);
        Sleep(500);
    }
 
    return 0;
}
0
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 89
03.03.2019, 17:04  [ТС]
ALast Ваш код мне полностью не подходит ((

Цитата Сообщение от CoderPC Посмотреть сообщение
гоняет символ по всему полю
ваш код мне полностью подходит, спасибо за помощь!)
0
35 / 28 / 8
Регистрация: 01.03.2019
Сообщений: 135
03.03.2019, 17:07
Цитата Сообщение от Lepricon228 Посмотреть сообщение
ALast Ваш код мне полностью не подходит ((
Почему?
0
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 89
03.03.2019, 21:54  [ТС]
Потому что я во-первых слабоват чтоб его полностью понять, во-вторых, это не совсем то что мне нужно было, конечно можно изменить пару параметров и будет как раз, но мне понравился код Кодера потому что поменяв условия на клавиши это прям то что мне надо было.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2019, 21:54
Помогаю со студенческими работами здесь

Почему при использовании SetConsoleTextAttribute меняется цвет всей консоли?
Когда использую функцию SetConsoleTextAttribute для того что бы задать цвет текста который печатаю, цвет всей консоли почему то принимает...

Обновление блока без перезагрузки всей страницы
Здравствуйте! У меня на странице присутствует возможность изменения выбранной записи. Так вот, я сделал возможность обновления...

Обновление не всей программы, а лишь отдельных ее компонентов
Доброго времени суток! Интересует вопрос, возможно ли изменять программу не всю полностью, а только некоторую ее часть. Допустим есть...

Обновление графического интерфейса всей программы на Java
У меня есть несколько классов, к примеру MainClass - он отвечает за создание главного JFrame, JMenuBar и JToolBar, потом класс Table...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru