在移动和调整窗口大小后,我很难尝试wgetch
从窗口读取数据。
输入后,我将窗口向上移动并将其高度也增加 1。然后我清除窗口并将数据写回它。问题是当我这样做wgetch
(或mvwgetch
)它在我向上移动窗口之前将输入光标定位在上一个位置。
这是我的代码:
#include <ncurses.h>
int main() {
WINDOW *win=initscr();
int y,x,i=1;
getmaxyx(win, y, x);
//creates a sub windows 1 col high
WINDOW *child=derwin(win, i, x, y-i, 0);
//doc says to touch before refresh
touchwin(win);
//print to child
waddstr(child, "hello");
wrefresh(child);
wrefresh(win);
noecho();
while(wgetch(child)!='q') {
++i;
mvderwin(child, y-i, 0);
wresize(child, i, x);
touchwin(win);
wclear(child);
waddstr(child,"hello");
wrefresh(child);
wrefresh(win);
}
delwin(child);
delwin(win);
endwin();
}
这里“hello”这个词确实按预期向上移动,但是输入光标在错误的位置。使用mvwgetch
仍然会导致同样的问题。cbreak()
,noecho()
而且scrollok(child)
似乎也没有帮助。
谢谢
编辑:更新版本更好地显示问题http://liveworkspace.org/code/31DruQ $0