Ncurses - «переместить» и его денверативы удаляют содержимое экрана - PullRequest
0 голосов
/ 19 января 2019

Я начинающий программист и сейчас пишу простое приложение для Ncurses, но я столкнулся с такой проблемой - вызов функции move или mvwadch в качестве примера очищает содержимое окна после места, куда я переезжаю.Код выглядит так:

#include <string>
#include <ncurses.h>
void function(WINDOW* win)
{
    std::string somestring = "Test";        
    waddstr(win, somestring.c_str());
    wmove(win , 0, 1);

    wrefresh(win);
}


WINDOW* win_ = initscr();
int main()
{
    function(win_);
    wgetch(win_);
    endwin();
}

Он оставляет только "T", например, если somestring "Test".

PS Извините за возможные плохие знания английского и c ++.

1 Ответ

0 голосов
/ 20 января 2019

Ваша программа не ожидает ввода пользователя (например, вызов getch) и немедленно завершает работу без вызова endwin. Поскольку ncurses инициализирует терминал в raw mode , из-за этого терминал переходит в raw mode , что делает нормальный перевод новой строки переводом каретки-возврата / перевода строки вашей оболочкой не сработавшим ( хотя большинство оболочек восстанавливаются после сброса режима обратно на cooked ). Это приводит к перезаписи некоторого текста, поскольку (вместо перехода на новую строку ) приглашение оболочки записывается в той же строке, что и текстовое сообщение.

...