首页 > 解决方案 > Ncurses - “移动”及其衍生词删除屏幕内容

问题描述

我是一名新手程序员,目前正在编写一个简单的 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++ 可能不好。

标签: c++ncurses

解决方案


您的程序不会等待用户输入(例如,调用getch)并立即退出而不调用endwin. 因为 ncurses 将终端初始化为原始模式,这使终端处于原始模式,因此您的 shell 无法立即将换行符正常转换为回车/换行(尽管大多数 shell 通过将模式重置为煮熟)。这会导致一些文本被覆盖,因为(而不是前进到换行符)shell 提示符与文本消息写在同一行上。


推荐阅读