Как сохранить вывод и ввод отдельно в консоли WinAPI? - PullRequest
0 голосов
/ 07 октября 2019

У меня проблема с выводом на консоль. Я разрабатываю библиотеку для других разработчиков, которая будет обеспечивать ведение журнала консоли и ввод команд консоли. Разработчик должен иметь возможность вводить ввод без перезаписи вывода.

В настоящее время консоль немедленно рисует любую клавишу, которую нажимает пользователь. Я настроил его так, что когда из программы поступает новый вывод, дисплей ввода перемещается, используя SetConsoleOutput и SetConsoleCursorPosition.

Однако дисплей все разваливается, как только пользователь начинаетчтобы отступить слишком далеко, используйте клавиши со стрелками за пределами их области ввода или нажмите Home / End. Если пользователь вводит какой-то ввод, то вывод будет записан поверх него, его ввод снова отобразится в строке ниже, и курсор консоли переместится обратно вниз. Но если они нажимают Домой, их курсор располагается прямо внутри содержимого, которое они не ввели: Example of messed up input

Это безнадежное дело или есть способ заставить это работать?

Как есть, у меня есть две альтернативы:

  1. Переключиться на чтение каждое отдельное событие нажатия клавиши , исключая любые функции доступа и локализации, такие как IME, и добавляядополнительные сложности для клавиш со стрелками, возврата, удаления и т. д.
  2. Полностью выбросить консоль и использовать обычное окно с элементом управления Rich Edit .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...