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