Ich benutze Ncurses, um eine einfache TUI für meine Anwendung zu machen. Ich habe die Grundlagen zum Erstellen und Drucken in einem Fenster, aber ich habe Probleme mit der Eingabe.Cursor verlässt Fenster beim Tippen (ncurses)
wenn ich fertig zu schreiben, wird der Cursor am Ende der Zeichenfolge positioniert schrieb ich
Aber wenn ich Eingabe beginnen, Cursor bewegt sich auf die linke obere Ecke der Terminal-Fenster.
Wie kann ich es an Ort und Stelle zu halten, während Sie tippen?
Hier ist mein Code:
#include <ncurses.h>
WINDOW *win;
int startx, starty, width, height;
int cport;
WINDOW *makewin(int h, int w, int y, int x)
{
WINDOW *lwin;
lwin = newwin(h, w, y, x);
box(lwin, 0 , 0);
wrefresh(lwin);
return lwin;
}
void dewin(WINDOW *lwin)
{
wborder(lwin, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ');
wrefresh(lwin);
delwin(lwin);
}
void getPort(){
win = makewin(height, width, starty, startx);
wbkgd(win, COLOR_PAIR(1));
mvwprintw(win, 0, 8, "Port Settings");
mvwprintw(win, 2, 4, "Set port server should");
mvwprintw(win, 3, 4, "listen to: ");
wrefresh(win);
scanw("%d", &cport);
}
int main()
{
initscr();
cbreak();
keypad(stdscr, TRUE);
start_color();
init_pair(1,COLOR_WHITE, COLOR_BLACK);
init_pair(2,COLOR_WHITE, COLOR_BLUE);
bkgd(COLOR_PAIR(2));
refresh();
height = 6;
width = 30;
starty = (LINES - height)/2;
startx = (COLS - width)/2;
getPort();
getch();
dewin(win);
endwin();
return 0;
}
Vielen Dank! Ich habe nicht einmal gedacht, dass Windows auch eine dedizierte Lesefunktion haben, wie es beim Drucken der Fall ist. Mit ** wscanw ** behob das Problem :) – Nidrax