【问题标题】:Ncurses erasing window when I don't want it to当我不想要它时,Ncurses 擦除窗口
【发布时间】:2017-02-24 23:02:57
【问题描述】:

我有两个窗口,一个在顶部,一个在底部(稍后我将在这两个窗口之间添加第三个窗口)。我为底部窗口画一条水平线,然后开始绘制顶部窗口,底部窗口被删除!

构造函数display()被自动调用,而函数displayMessage()被我的代码调用。

这是display()的代码:

display::display()
{
  //initialize window
  initscr(); //start curses mode
  cbreak(); //Disable line buffering
  curs_set(0); //Don't show curser
  refresh(); //Now refresh screen

  //setup bottom bar
  bottomBar = newwin(2, 80, 22, 0); //create new window
  whline(bottomBar, '_', 80); //draw line
  wrefresh(bottomBar); //refresh

  //setup top bar
  topBar = newwin(0, 80, 0, 0); //create new window
  wattron(topBar, A_UNDERLINE); //text is to be underlined

}

这是displayMessage()的代码:

void display::displayMessage(string message)
{
  //do some other necessary stuff
  int length = message.length(); //get length of message
  wmove(topBar, 0, 0); //move curser back to beginning
  //getch();
  wrefresh(topBar); //refresh
  //getch();
  whline(topBar, '_',80); //draw line for bottom
  //getch();
  wmove(topBar, 0, 40 - length/2 - 1); //move cursor to center text
  wprintw(topBar,message.c_str()); //print message
  wrefresh(topBar); //refresh
}

另外这里是调用这两个的代码sn-ps:

//initialize stuff
  pomodoro instance;

  while(true) //loop forever, or until user
    {
      for (int i = 0; i < 3; i++) //loop thru 4 pomodoros
    {
      //work
      instance.Display.displayMessage("**Time to work!**");
      instance.playAlarm();
      //waitForUser();
      //timer(config.workTime);
      //break
      return 0; //doing development right now

【问题讨论】:

    标签: c++ user-interface ncurses


    【解决方案1】:

    这一行有问题:

      topBar = newwin(0, 80, 0, 0); //create new window
    

    因为第一个参数为零。 manual page 解释:

    如果 nlines 或 ncols 为零,则默认为 LINES - begin_yCOLS - begin_x

    所以零参数会使你的窗口重叠(很多)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多