将光标移动到ncurses中的上一行
如果光标在按下b(删除)键时位于行首,我想将光标移到上一行。 将光标移动到ncurses中的上一行
void processKey() {
char ch = getch();
char *check = unctrl(ch);
int safe = (check != 0 && strlen(check) == 1);
int Trow,Tcol; //Terminal's full rows and columns.
getmaxyx(stdscr,Trow,Tcol);
int row,col; //Current row and columns.
getyx(stdscr,row,col);
switch(ch)
{
case 0x11: //Ctrl + Q
closee();
break;
case 'b': //pressing "b" deletes the previous character.
if(col==0)
{
//This should move the cursor to the previous line. But that doesn't work.
move(row-1,Tcol);
addstr("\b \b");
refresh();
break;
}
else
{
addstr("\b \b");
break;
}
default:
if(safe)
{
addch(ch);
}
}
}
我想将光标移动到上一行。但是这并没有发生,光标只停留在当前位置。我试图通过使用mvcur()来做到这一点,但也显示了相同的结果。 请告诉我什么是正确的方法来完成这?
回答:
的函数的使用是move
(wmove
):
getyx(stdscr,row, col); move(row - 1, col);
这些给出相同的结果:
move(row - 1, col); wmove(stdscr, row - 1, col);
虽然前者可作为宏调用wmove
(或实际上这两者来实施可能是宏)。
但是,如果你的当前位置已经是第一行,那些返回一个错误ERR
,并不会导致窗口滚动。
顺便说一下,示例程序在调用move
/wmove
之后的addstr
之后不会执行refresh
。
以上是 将光标移动到ncurses中的上一行 的全部内容, 来源链接: utcz.com/qa/257493.html