移动 A Window- ncurses

Move A Window- ncurses

我正在制作这个简单的程序,其中我制作了一个 window 并使用箭头键但似乎找不到解决方案。我正在使用函数 mvwin() 来移动这个 window。所有输入似乎都达到了 window 但没有移动。我们将不胜感激。

这是代码片段:

#include<ncurses.h>

WINDOW *create_newwin(int height, int width, int starty, int startx)
{
      WINDOW *local_win = newwin(height, width, starty, startx);
      box(local_win, 0, 0);
      wprintw(local_win, "CAN YOU SEE ME MOVE");
      wrefresh(local_win);
      return (local_win);
}

int main()
{
       char ch;
       int x= 5, y= 10, h=5, wid= 20;
       initscr();
       noecho();
       //curs_set(FALSE);
       keypad(stdscr, TRUE);
       cbreak();
       refresh();

       printw("PRINT q to EXIT\n");
       WINDOW* wn= create_newwin(h, wid, x, y);                      //tried it directly with newwin() but nothing
       //box(wn,0,0);
       //wrefresh(wn);
       //keypad(wn, TRUE);
       //mvwin(wn, LINES/2, COLS/2);
       wrefresh(wn);

       while((ch=getch())!= 'q')                                      //function to move a window
       {
             switch(ch) 
             {
                    case KEY_LEFT: if(x>0)  --x;
                                    break;
                    case KEY_RIGHT: if(x<(COLS-16)) ++x;
                                    break;
                    case KEY_UP: if(y>0)    --y;
                                    break;
                    case KEY_DOWN: if(y<(LINES-6))  ++y;
                                    break;
            }
            //wprintw(wn,"%c",ch);                                  //to check for input
            mvwin(wn, y, x);
            wrefresh(wn);
    //      wclear(wn);
    }
    //wgetch(wn);
    delwin(wn);                                                     //clean up window
    endwin();
    return 0;
 }

您的 switch 语句中存在整数溢出。

char ch 的定义更改为 main 顶部的 int ch,问题就消失了。