2009-11-28 17 views
12

Comment trouver la largeur du terminal & hauteur d'une application ncurses?Taille du terminal ncurses

+0

@DylanJ, pas besoin de mettre la réponse dans la question, surtout une fois que vous avez accepté la réponse. – paxdiablo

Répondre

13
+1

Aussi: N'oubliez pas que certains systèmes d'exploitation ont SIGWINCH que votre processus reçoit lorsque le terminal est redimensionné ... – asveikau

+0

'initscr()' effacera l'écran. Y at-il un moyen qui peut obtenir la taille des terminaux et ne pas effacer l'écran? – jiandingzhe

+0

Je ne suis pas sûr que ce soit vrai parce que 'y' &' x' ne sont pas des pointeurs et donc la fonction ne leur copiera rien. Et à partir de 'mkssoftware.com': les macros" 'getbegyx() et getmaxyx() stockent les coordonnées de début et la taille de la fenêtre spécifiée." " –

0

Qu'en est-il en utilisant SCR_H et SCR_W?

0

J'utilise ce 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); 
+0

Ce n'est pas très ncursesish. – einpoklum

3

applications ncurses gèrent normalement SIGWINCH et utiliser le ioctl avec TIOCGWINSZ pour obtenir la notion de screensize du système. Cela peut être remplacé par les variables d'environnement LINES et COLUMNS (voir use_env).

Compte tenu de cela, les ncurses variables globales LINES et COLS sont mis à jour comme un effet secondaire lorsque wgetch rendements KEY_RESIZE (en réponse à une SIGWINCH) pour donner la taille de stdscr (l'écran standard représentant l'ensemble du terminal).

Vous pouvez bien sûr utiliser getmaxx, getmaxy et getmaxyx pour obtenir une ou les deux limites pour les ordonnées et les ordonnées d'une fenêtre. Seul le dernier est standard (et portable).

Pour en savoir plus:

0

les variables COLS, les lignes sont initialisés aux tailles d'écran après initscr().

Source: NCURSES Programming HOWTO

Je ne sais pas s'ils sont mis à jour Redimensionner bien.