gotoxy en C fuera de pantalla

nilart
23 de Mayo del 2006
Buenas, tengo un problema dibujando una lista con el gotoxy en C, intento simular el aspecto de una tabla, con sus columnas y filas para cada registro, el problema viene que al mandar el gotoxy fuera de pantalla falla y empieza a amontonar los registros, esto es una limitacion del gotoxy segun he visto en la documentacion, ... alguien sabe si hay alguna forma de evitarlo? mover la pantalla quizas?

si no tendre que usar el \\n y no me gusta =P

cualquier ayuda se agradece,
un saludo

hiei
23 de Mayo del 2006
Lo que se me ocurre es hacer un enboltorio para alguna funcion tipo putch que escriva en pantalla pero que antes comprueve la pocicion del cursor que almacenas aparte usando otro enboltorio para el gotoxy:

int actual_x, acutal_y;
int clip_x1=1, clip_y1=1, clip_x2 = 24, clip_y2 = 79;
/* Manejando las variables clip puedes crear areas visibles en cualquier pocicion de la pantalla */

void myGotoXY( int x, int y ) {
actual_x = x;
actual_y = y;
gotoxy( x, y ); // Si falla no importa...
}
...
void myputch( char c ) {
if ( (actual_x>=clip_x1) && ( actual_y>=clip_y1 ) && (actual_x<=clip_x2 ) && ( actual_y<=clip_y2 ) )
putch( c );
}
...
Y asi con las otras... El problema de esto es que tienes que cambiar tu programa para que use tus funciones y no las de la conio directamente... Todo un coñazo...

Otro punto en contra que tiene esto es que es un poco lento (en maquinas MUY viejas lo veras como si fuera una pintada "animada")

Otra que tienes es pasarte de conio a ncurses para DOS muy recomendable... ya que puedes hacer mas guarradas con esta y trabajar a bajo nivel sin las limitaciones de conio e incluso, tus programas seran portables a cualquier sistema operatibo que tenga una consola (el 99%) pero creo que no hay versiones precompiladas para Turbo C asi que tendras que recompilar los que vienen con DJGPP... en resumen, bueno, pero complicado.

Suerte.