我用ncurse创建了一个窗口,我试图用我的窗口内的箭头键移动光标,并且只能在里面移动光标。对于我的理解我必须使用wmove()
,但显然我没有得到如何使用它。在窗口中移动光标 - ncurses
下面是一些代码片段,让你知道我做了什么:
int main(int argc, char **argv)
{
WINDOW *my_win;
int startx, starty, width, height;
int ch;
int x = 50;
int y = 5;
initscr();
cbreak();
keypad(stdscr, TRUE);
noecho();
height = 10;
width = 100;
starty = (LINES - height)/2;
startx = (COLS - width)/2;
printw("Press F1 to exit");
refresh();
my_win = create_newwin(25, 50, y, x);
wmove(my_win, y, x);
while((ch = getch()) != KEY_F(1))
{
if ((ch = getch()) == KEY_RIGHT)
wmove(my_win, y++, x++);
refresh();
}
endwin();
return 0;
}
WINDOW *create_newwin(int height, int width, int starty, int startx)
{
WINDOW *local_win;
local_win = newwin(height, width, starty, startx);
box(local_win, 0, 0);
wrefresh(local_win);
return (local_win);
}
不太熟悉的ncurses,但应该'create_newwin(25,50,Y,X)'代替是'create_newwin(starty,startx,height,width)'?然后,它看起来像用'wmove(my_win,y,x)'将光标放在右下角,当按下'KEY_RIGHT'时,尝试将它向下移动到右侧,当你已经尽可能地朝着这个方向前进。 – Steve 2015-04-02 12:26:07
@Steve我刚编辑我的问题,让你看到我的create_newwin。根据我的功能,create_newwin(25,50,y,x)似乎正在工作。 – Mehdi 2015-04-02 13:04:51