我正在创建一个具有多个窗口的应用程序,每个窗口都包含在一个面板中。其中一个窗口尤其必须从键盘输入。我还需要能够检测特殊键,如F键和箭头键。我目前的应用是这样做的。但是,即使我调用wmove(my_wins[1], 3, 2)
后光标也不在正确的位置。
如何将光标移动到适当位置的适当面板?我希望终端光标位于我的第二个窗口(my_wins[1]
),在我想要从中获取字符的下一个空白区域。在这种情况下,这是在输入到该行的最后一个字符之后的第{3}行。{/ p>
我的代码:
my_wins[1]
答案 0 :(得分:1)
您的示例会在更新前将wmove
放入屏幕。这些更新将光标留在更新屏幕时最小光标移动的任何位置。
此更改显示了如何执行您要求的操作:
$ diff -u foo.c.orig foo.c
--- foo.c.orig 2017-03-06 18:56:26.000000000 -0500
+++ foo.c 2017-03-06 19:00:03.568868347 -0500
@@ -33,6 +33,7 @@
std::string str = "";
std::vector<std::string> cmds;
+ wmove(my_wins[1], 3, 2+str.size());
while ((ch = wgetch(my_wins[1])) != KEY_F(1))
{
switch(ch)
@@ -56,9 +57,9 @@
}
clear_win1();
mvwprintw(my_wins[1], 3, 2, "%s", str.c_str());
- wmove(my_wins[1], 3, 2+str.size());
update_panels();
doupdate();
+ wmove(my_wins[1], 3, 2+str.size());
}
}