Frage
Wie finde ich die terminale Breite und Höhe einer NCurses -Anwendung?
Lösung
void getmaxyx(WINDOW *win, int y, int x);
Ich glaube...
Dies kann auch helfen ...
Andere Tipps
NCURSES -Anwendungen werden normalerweise behandelt SIGWINCH
und benutze die ioctl
mit TIOCGWINSZ
Um den Begriff der Bildschirme des Systems zu erhalten. Dies kann durch die Umgebungsvariablen überschrieben werden LINES
und COLUMNS
(sehen use_env
).
Angesichts dessen die globalen NCURSSE -Variablen LINES
und COLS
werden als Nebeneffekt aktualisiert, wenn wgetch
kehrt zurück KEY_RESIZE
(als Antwort auf a SIGWINCH
) um die Größe von zu geben stdscr
(Der Standardbildschirm, der das gesamte Terminal darstellt).
Sie können natürlich verwenden getmaxx
, getmaxy
und getmaxyx
Um eine oder beide Grenzen für die X- und Yordinaten eines Fensters zu erhalten. Nur das letzte ist Standard (und tragbar).
Weitere Lesung:
Ich benutze diesen Code:
struct winsize size;
if (ioctl(0, TIOCGWINSZ, (char *) &size) < 0)
printf("TIOCGWINSZ error");
printf("%d rows, %d columns\n", size.ws_row, size.ws_col);
Was ist mit der Verwendung SCR_H
und SCR_W
?
Die Variablen cols, Linien werden nach Initscr () auf die Bildschirmgrößen initialisiert.
Quelle: NCURSses Programmierung Howto
Ich bin mir nicht sicher, ob sie in der Größenänderung aktualisiert werden.