Да, вроде как тема написана правильно
Добрый всем день
Нужно реализовать такой вывод в консоль, чтобы пользоватль мог его редактировать. Проще всего объяснить на примере unix'ового шелла — когда мы нажимаем tab при написании пути или имени файла, баш выдает подходящее имя. Причем мы можем потом отредактировать/удалить этот текст. Понимаю, это возможности баш-шелла.
А стандартный вывод в stdout/err? По-дефолту он остается read-only для пользователя...
Вот в чем вопрос — возможно ли такое реализовать?
Вопрос в С\С++ потому что желателдьно поддержка от С/С++ стд или boost либ, ибо проект будет для win/unix.
Или стоит разнести отдельно в топики по win32/unix?
Здравствуйте, fuyant, Вы писали:
F>Вопрос в С\С++ потому что желателдьно поддержка от С/С++ стд или boost либ, ибо проект будет для win/unix. F>Или стоит разнести отдельно в топики по win32/unix?
К бусту это отношения не имеет, потому что вопрос стоит так:
Написать собственную консоль, которая — как и полагается всем консолям — бэкендом цепляется на потоки ввода-вывода, а фронтэндом — на взаимодействие с пользователем (создаёт окно / цепляется к текстовому терминалу...; рисует буковки; слушает клавиатуру; ну и т.д. и т.п.)
Можно ли сделать это кроссплатформенным — сомневаюсь. Во всяком случае, это будет затратно (и сведётся к написанию консолей для виндов отдельно, для никсов отдельно).
А консольная прога, если родительский процесс передал ей хэндл своей консоли — пользуется ею, а если не передал — создаёт дефолтную средствами операционной системы.
Примитивную донельзя консоль мы можем видеть в окошке Output у Visual Studio, куда она валит выхлоп компилятора.
FAR творчески переосмысливает (встраивается в) дефолтную консоль товарища Коммандкома.
Здравствуйте, Кодт, Вы писали:
К>Написать собственную консоль, которая — как и полагается всем консолям — бэкендом цепляется на потоки ввода-вывода, а фронтэндом — на взаимодействие с пользователем (создаёт окно / цепляется к текстовому терминалу...; рисует буковки; слушает клавиатуру; ну и т.д. и т.п.)
не, это перебор. Эта фича того не стоит
К>FAR творчески переосмысливает (встраивается в) дефолтную консоль товарища Коммандкома.
Кстати, Фар — это ж обычное консольное приложение. И Фар позволяет вводить и редактировать текст, т.е. он выполняет то, что мне нужно. Как он это делает? Спрашивать у фаровцев практически бесполезно, они жадные, я уже пробовал однажды.... хотя стоит попробовать еще раз
И еще пришло в голову — если в обычном cmd жать стрелочки вверх/вниз, выводятся команды из истории. Может есть возможность заставить консоль сделать такое для меня? Напрмиер, подменить буфер истории, или еще как....
По здравому размышлению пришел к выводу, что мультиплатформенно действительно не получится, раз стандартная библиотека такое не поддерживает. Все таки cmd и bash — не одно и то же, хотя обе умеют так рабтать.... А цмд даже предлагает по кругу все файлы по нажатию таба. Только щаз узнал
Здравствуйте, fuyant, Вы писали:
F>Кстати, Фар — это ж обычное консольное приложение. И Фар позволяет вводить и редактировать текст, т.е. он выполняет то, что мне нужно. Как он это делает? Спрашивать у фаровцев практически бесполезно, они жадные, я уже пробовал однажды.... хотя стоит попробовать еще раз
Внимательно читаем всю справку по Console API. Там есть и прямое чтение/запись в текстовый видеобуфер, и асинхронное чтение клавиатуры, и ещё много чего.
F>И еще пришло в голову — если в обычном cmd жать стрелочки вверх/вниз, выводятся команды из истории. Может есть возможность заставить консоль сделать такое для меня? Напрмиер, подменить буфер истории, или еще как....
Обрати внимание: если ты запустишь какую-нибудь простенькую интерактивную консольную программу из-под фара, то не получишь в ней все те фичи, которые умеет сам фар. Только то, что предоставляет тебе cmd (стрелка вверх — предыдущая строка, и т.п.)
То есть, фар не делает собственную консоль, а пользуется дефолтной.
Здравствуйте, fuyant, Вы писали:
F>Да, вроде как тема написана правильно F>Добрый всем день
F>Нужно реализовать такой вывод в консоль, чтобы пользоватль мог его редактировать. Проще всего объяснить на примере unix'ового шелла — когда мы нажимаем tab при написании пути или имени файла, баш выдает подходящее имя. Причем мы можем потом отредактировать/удалить этот текст. Понимаю, это возможности баш-шелла.
Строго говоря, это возможность библиотеки readline. Есть ли хорошая реализация для win — не знаю (cygwin вас, скорее всего, не устроит).