/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Ayuda crear pantallas para mentenimiento de datos con GNUgcc

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
eldelaesquina



Registrado: 12 Abr 2013
Mensajes: 3

MensajePublicado: 15/04/2013 4:42 am
Título: Ayuda crear pantallas para mentenimiento de datos con GNUgcc

Ya que he fracasado con la pregunta de como utilizar pdcurses (ncurses) con MobaXterm, lo vuelvo a intentar por si acaso no se entendió.

Como ya dije en mi anterior mensaje de petición de ayuda, el problema creo que es muy sencillo, se trata de crear pantallas para el mantenimiento de datos de un fichero controlando la posición de cada dato en la pantalla, e.d. poner los datos en una posición determinada. Utilizo C con GNU gcc y pdcurses ya que esto es lo que veo en la red que puede funcionar.

Si alguien me puede ayudar para realizar esto se lo agradecería mucho.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7193
Ubicación: Mexico

MensajePublicado: 16/04/2013 5:14 am
Título:

Si no se ha respondido al tema no es por falta de ganas sino porque hay pocos usuarios en estos foros que utilizan ncurses. Lo mejor es esperar la respuesta del usuario mas experimentado en el tema (me refiero a digies).

Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 996
Ubicación: Blumenau (Br)

MensajePublicado: 17/04/2013 4:57 am
Título:

Hola eldelaesquina

Como he dicho, Curses trabaja con una única pantalla que es el terminal Curses, por lo tanto, no puedes crear otras pantallas fuera de ésta, pero sí puedes crear ventanas dentro del mismo terminal Curses e ir colocando en ellas los datos de mantenimiento de tu archivo; no hay problemas con imprimir esos datos en una posición determinada de la ventana que elijas. Y como le dije ya a otro usuario del foro, Curses también brinda la posibilidad de implementar pads que son como una suerte de ventanas, muy bueno para trabajar con columnas de texto tipo periódico.

Te dejo un sencillo ejemplo sobre el uso de ventanas y posicionamiento de texto. Lo hice para GNU/Linux, pero no deberías tener problemas si lo compilas en MS Windows siempre y cuando hayas instalado PDCurses (y cambiado ncurses.h por curses.h):

Código:
#include <ncurses.h>
#include <stdlib.h>

void info(void);

int main(void)
{
    WINDOW *a = NULL, *b = NULL, *c = NULL, *d = NULL;
    int maxi_x, maxi_y, mitad_x, mitad_y;

    initscr();

    /* Iniciar colores */
    start_color();
    init_pair(1, COLOR_WHITE, COLOR_BLUE);
    init_pair(2, COLOR_WHITE, COLOR_RED);
    init_pair(3, COLOR_WHITE, COLOR_GREEN);
    init_pair(4, COLOR_WHITE, COLOR_CYAN);

    /* Calcular el tamaño de las ventanas y sus posiciones: */
    getmaxyx(stdscr, maxi_y, maxi_x);
    mitad_x = maxi_x >> 1;
    mitad_y = maxi_y >> 1;

    refresh();

    /* Crear cuatro ventanas para llenar la pantalla: */
    if ((a = newwin(mitad_y, mitad_x, 0, 0)) == NULL) info();
    if ((b = newwin(mitad_y, mitad_x, 0, mitad_x)) == NULL) info();
    if ((c = newwin(mitad_y, mitad_x, mitad_y, 0)) == NULL) info();
    if ((d = newwin(mitad_y, mitad_x, mitad_y, mitad_x)) == NULL) info();

    /* Escribir para cada ventana: */
    mvwaddstr(a, 0, 0, "Ventana A - El Rincon del C\n");
    wbkgd(a, COLOR_PAIR(1));
    wrefresh(a); /* Refresco la ventana para su correcta visualización */
    mvwaddstr(b, 0, 1, "Ventana B - El Rincon del C\n");
    wbkgd(b, COLOR_PAIR(2));
    wrefresh(b);
    mvwaddstr(c, 1, 0, "Ventana C - El Rincon del C\n");
    wbkgd(c, COLOR_PAIR(3));
    wrefresh(c);
    mvwaddstr(d, 1, 1, "Ventana D - El Rincon del C\n\nPulse una tecla para continuar... ");
    wbkgd(d, COLOR_PAIR(4));
    wrefresh(d);
    getch();

    endwin();

    return EXIT_SUCCESS;
}

void info(void)
{
    addstr("Incapaz de asignar memoria para la nueva ventana.\n");
    refresh();
    getch();
    endwin();
    exit(EXIT_FAILURE);
}

Lo que hace el programa es crear en el terminal (pantalla) Curses cuatro ventanas ("windows") de distintos colores (azul, rojo, verde, cyan). Observa cómo se ubican cada cadena (texto) en una posición específica en cada una de las ventanas.

Un saludo
_________________
With enough eyes, all bugs are easy to find.

Eric S. Raymond
Volver arriba
eldelaesquina



Registrado: 12 Abr 2013
Mensajes: 3

MensajePublicado: 25/04/2013 11:41 am
Título: Gracias a RIR3760 y DIGIES

Gracias a RIR3760 y DIGIES por atenderme. La verdad es que ya había perdido la esperanza de alguna respuesta.
He entendido que ncurses es autónomo, es decir, el cuerpo tanto de la pantalla como el código de operación se hace sobre ncurses y no se integra posteriormente desde otra plataforma, ¿no es así?.
Voy a probar el ejemplo que me envías y ya contaré el resultado.
Gracias.
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com