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

Работа с консолью в Windows. Перемещение фокуса ввода на начало. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
CoffeeSamurai
2 / 2 / 0
Регистрация: 04.04.2011
Сообщений: 19
25.07.2011, 23:30     Работа с консолью в Windows. Перемещение фокуса ввода на начало. #1
Хочу написать тетрис в текстовом режиме, а для этого надо каждый раз заново выводить заново поле с текстовым изображением предметов. Как перемещать фокус ввода (или как это называется), на начало.
К примеру я вывел текст: "Hello World!!!";
Как сделать так, чтобы можно было снова вводить с того места, где находится символ "H"?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2011, 23:30     Работа с консолью в Windows. Перемещение фокуса ввода на начало.
Посмотрите здесь:

Работа с консолью C++
Перемещение фокуса по нажатию на TAB C++
Работа с консолью C++
C++ Проблемы с консолью в Codeblocks
Работа с консолью в Dev C++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
25.07.2011, 23:45     Работа с консолью в Windows. Перемещение фокуса ввода на начало. #2
Если не будете слишком часто обновлять экран, то и
C++
1
system("cls");
покатит
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
26.07.2011, 06:20     Работа с консолью в Windows. Перемещение фокуса ввода на начало. #3
Вот привёл не большой пример, смотри. :cofee2:
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
#include <stdio.h>
#include <windows.h>
 
 
int main(void){
 
    HANDLE  hout = GetStdHandle(STD_OUTPUT_HANDLE);
 
    const char* chars[7] = {
        "Samsung\n",
        "Motorolla\n",
        "Sony Erricson\n",
        "Nokia\n",
        "Apple\n",
        "LG\n",
        "PHILIPS\n"
    };
 
    DWORD dw;
    for(int i  = 0; i < 7; i++) {
        SetConsoleTextAttribute(hout, 9 + i);
        WriteConsole(hout, chars[i], lstrlen(chars[i]), &dw, NULL);
    }
    Sleep(1000u);
 
    CONSOLE_SCREEN_BUFFER_INFO info;
    GetConsoleScreenBufferInfo(hout, &info);
    int cnt = 8;
    while(cnt--) {  // Поднимимся назад к самой первой строке
        COORD pos = { info.dwCursorPosition.X, info.dwCursorPosition.Y-- };
        SetConsoleCursorPosition(hout, pos);
        FillConsoleOutputCharacter(hout, ' ', info.dwSize.X,      pos, &dw);
        FillConsoleOutputAttribute(hout, 40 + cnt*20, info.dwSize.X, pos, &dw);
        Sleep(1000u);
    }
 
    getchar();
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
26.07.2011, 09:28     Работа с консолью в Windows. Перемещение фокуса ввода на начало. #4
Посмотри этот пост там как раз по твоей теме и даже чуть больше
Несколько вопросов
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
26.07.2011, 10:07     Работа с консолью в Windows. Перемещение фокуса ввода на начало. #5
так тоже можно, и для тетриса по моему больше подойдёт. правда этот способ не стирает существующие символы а просто перемещяет каретку. а ещё вместо endl придётся использовать \n...
C++
1
2
3
4
5
6
7
#include <iostream>
int main()
{
    std::cout<<"Hello, world!";
    std::cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b";
    return 0;
}
Yandex
Объявления
26.07.2011, 10:07     Работа с консолью в Windows. Перемещение фокуса ввода на начало.
Ответ Создать тему
Опции темы

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