Как кодировать интерфейс меню CLI, аналогичный интерфейсу меню документации октавы в операционной системе Windows на языке программирования C - PullRequest
0 голосов
/ 25 июня 2019

После открытия Octave в режиме CLI и поиска справки я попал в прекрасно управляемый контекст меню документации в CLI Windows, даже выделенное движение клавиши со стрелкой и строку состояния внизу.

Скриншот: screenshot

В Linux ncurses обычно используется для создания красивых интерфейсов приложений CLI. Я просто хочу знать, как им удалось сделать этот контекст меню в интерфейсе командной строки Windows (поскольку Windows не поддерживает ncurses)?

Было бы лучше, если бы кто-нибудь смог привести пример с кодом.

[Примечание: не предлагайте новые способы создания контекстов меню]

Ответы [ 2 ]

2 голосов
/ 25 июня 2019

Octave использует ginfo из пакета texinfo (https://www.gnu.org/software/texinfo/) для отображения справки.

Он (texinfo) пытается компилировать с использованием ncurses, но вместо этого может также использовать termcap для консольных функций.

В октаве в окнах используется termcap (https://www.gnu.org/software/termutils/manual/termcap-1.3/html_mono/termcap.html)

, которая предоставляет информацию о командах, которые можно отправлять на терминал для перемещения курсора, прокрутки, установки окон, изменения внешнего вида текста и т. Д.

0 голосов
/ 25 июня 2019

Когда стандартный вывод не перенаправлен, вы можете использовать низкоуровневый API консоли Windows для рисования текста в выбранном вами цвете переднего плана / фона на определенной позиции.

Использование SetConsoleCursorInfo + SetConsoleCursorPosition для управления курсором, ReadConsoleInput для чтения входных событий и WriteConsoleOutput или FillConsoleOutput* для записи в окне консоли.

...