将光标移动到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()来做到这一点,但也显示了相同的结果。 请告诉我什么是正确的方法来完成这?

回答:

的函数的使用是movewmove):

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

回到顶部