curses向后移动会计前一行

问题描述 投票:0回答:2

有没有办法在考虑前一行时向后移动光标,即当光标从行的开头返回时,它会转到前一行的最后一个非空字符?

c ncurses
2个回答
0
投票

您可以在curses(全屏)应用程序中轻松完成(通过使用winchwin_wch从虚拟屏幕中读取字符),但是在termcap / terminfo低级应用程序中会发现它更难,因为没有可移植的方法直接从终端的屏幕上阅读。


0
投票

所以没有内置的方法,所以我必须自己编写

void backspace(){

  int x,y;
  getyx(stdscr,y,x);

  if(x == 0) {

    if( y == 0 ) {

      return;
    }

    x = getmaxx(stdscr) - 1;

    move(--y,x);

    char ch = ' ';

    while(ch == ' ' && x != 0){
      move(y,--x);
      ch=inch();
    }

  } else {
    move(y,x-1);

  } 


  delch();
}

请注意,我已删除了此方法中的一些不相关的文件I / O相关代码。

© www.soinside.com 2019 - 2024. All rights reserved.