Как вы можете видеть на u413.com: текст появляется на экране буква за буквой, что выглядит круто,

Я хочу сделать то же самое в Консоли

Я получил исходный код версии 1.2; потому что мне не нужна вся сложность версии 2; Мне просто нужна простая командная строка с текстом, который появляется на экране буква за буквой. Мне не нужны большинство встроенных функций, предлагаемых консолью, таких как прозрачность, значок панели задач и т. д.

База исходного кода довольно мала, всего около 5 файлов.

Основной файл класса выглядит как Console.cpp;

Поскольку консоль похожа на приложение с графическим интерфейсом, данные не записываются в STDOUT.

Но вот что происходит;

Вызывается дескриптор; И этот дескриптор, по-видимому, пишет в консоль;

m_hStdOut   = ::GetStdHandle(STD_OUTPUT_HANDLE);

Теперь, что я хочу уметь делать; Как-то читается ручка; посмотреть, какой у него текст; И добавьте в цикл метод ::Sleep(20); чтобы убедиться, что текст отображается буква за буквой.


@Alf P. Steinbach Я написал код psuedo для создания команды sleep (в java). Я также использовал его во всех других написанных мной java-программах, но недостатком было то, что он будет работать только для моих программ, а не для каждой запускаемой программы. в командной строке, но чего я не знаю, так это кода для создания консоли, программы подсистемы консоли Windows, я бы хотел, чтобы это было возможно с java, чтобы я мог использовать его и в Linux, но теперь позвольте мне спросить вас, что именно Я имел в виду...

Программа, которая просто принимает ввод с экрана, отправляет его в cmd.exe для обработки и отправляет ответ, и все, что мне нужно сделать, это добавить команду сна между каждым символом...

Все, что мне нужно, это помощь, чтобы сделать это, я бы хотел, чтобы вы могли начать меня с этого и, возможно, предоставить ссылки и ссылки, чтобы это сделать...

c++
0
Loki 4 Дек 2011 в 07:59
Каков твой вопрос? и что это за половинчатая веб-ссылка? в любом случае утверждение "вещи не записываются в STDOUT" скорее всего неверно
 – 
Cheers and hth. - Alf
4 Дек 2011 в 08:18
Мой вопрос - как мне реализовать эту функцию? например, чтобы текст отображался по буквам, я хочу знать, как я могу прочитать содержимое дескриптора (m_hStdOut)
 – 
Loki
4 Дек 2011 в 08:22
1
¤ Консоль предназначена для запуска обычных консольных программ. Вам не нужно иметь дело с исходным кодом консоли. Вы можете просто создать обычную программу подсистемы консоли Windows (которая используется по умолчанию для всех существующих компиляторов Windows C++), а затем запустить ее либо в обычном окне консоли Windows, либо в окне консоли. Чтобы прочитать текст из буфера окна консоли, вы можете использовать ссылку ReadConsole. Для вывода вы можете использовать функцию WriteConsole. И используйте Sleep, чтобы заснуть. Ура и чт.,
 – 
Cheers and hth. - Alf
4 Дек 2011 в 08:29
Не могли бы вы объяснить далее с возможными ссылками и помочь? потому что мне бы очень понравилось, если бы вы помогли больше... можете ли вы также дать пример кода?
 – 
Loki
4 Дек 2011 в 08:38
@AlfP.Steinbach, не могли бы вы помочь мне с примером кода? извините, что отметил вас...
 – 
Loki
4 Дек 2011 в 09:10

1 ответ

Этот Console.cpp выглядит как эмулятор консоли, то есть запускает ДРУГИЕ программы. Вам не нужен исходный код, вы можете запускать существующие консольные приложения.

STD_INPUT_HANDLE, STD_OUTPUT_HANDLE и STD_ERROR_HANDLE — это дескрипторы окон для STDIN, STDOUT и STDERR. В основном они делают то же самое, только с некоторыми отличиями в том, как их использовать.

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

0
Evan Dark 5 Дек 2011 в 05:15
Console.cpp, являющийся эмулятором, был именно тем, что мне нужно, мне нужна эта программа для запуска всего, что я ввожу в cmd.exe. как вы можете видеть из моего вопроса: m_hStdOut - это дескриптор, но вот загвоздка... этот дескриптор используется только трижды во всей программе Console.cpp, и я ни разу не вижу символов, отображаемых на экране!
 – 
Loki
6 Дек 2011 в 19:01