2009-11-28 17 views
12

¿Cómo puedo encontrar el ancho del terminal & altura de una aplicación ncurses?ncurses tamaño de terminal

+0

@DylanJ, no hay necesidad de poner la respuesta en la pregunta, especialmente una vez que haya aceptado la respuesta. – paxdiablo

Respuesta

13
+1

También: no olvide que algunos sistemas operativos tienen SIGWINCH que su proceso recibe cuando se cambia el tamaño de la terminal ... – asveikau

+0

'initscr()' borrará la pantalla. ¿Hay alguna manera que pueda obtener el tamaño del terminal y no borrar la pantalla? – jiandingzhe

+0

No estoy seguro de que esto sea cierto porque 'y' y' x' no son punteros y, por lo tanto, la función no les copiará nada. Y de 'mkssoftware.com':" 'getbegyx() y las macros getmaxyx() almacenan las coordenadas de inicio actuales y el tamaño de la ventana especificada." –

0

Qué acerca del uso SCR_H y SCR_W?

0

estoy utilizando este código:

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

Eso no es muy ncurses'ish. – einpoklum

3

aplicaciones ncurses manejan normalmente SIGWINCH y utilizar el ioctl con TIOCGWINSZ para obtener la noción de sistema de la Tamaño_de_la_pantalla. Eso puede ser anulado por las variables de entorno LINES y COLUMNS (ver use_env).

Teniendo en cuenta que, las variables globales ncurses LINES y COLS se actualizan a medida un efecto secundario cuando wgetch rendimientos KEY_RESIZE (en respuesta a una SIGWINCH) para dar el tamaño de stdscr (la pantalla estándar que representa toda la terminal).

Por supuesto, puede usar getmaxx, getmaxy y getmaxyx para obtener uno o ambos límites para las ordenadas x e y de una ventana. Solo el último es estándar (y portátil).

Lectura adicional:

0

las variables COLS, las líneas se inicializan a los tamaños de pantalla después de initscr().

Fuente: NCURSES Programming HOWTO

no estoy seguro de si se actualizan en el cambio de tamaño sin embargo.