Ayuda con programa de threads y visualización en pantalla.

Iniciado por malospelosmalon, 15 Julio 2011, 14:24 PM

0 Miembros y 1 Visitante están viendo este tema.

malospelosmalon

Buenos días compañeros.

Para estudiar un poco sobre hilos y procesos en C++ he hecho una pequeña aplicación que a la vez que muestra la fecha y hora del sistema en la pantalla te va pidiendo 2 numero y te muestra el resultado de la suma.

El problema es que a traves de un codigo que he encontrado en internet intento emular el gotoxy de c, pero como podreis ver el cursor esta todo el rato parpadeando ya que cada vez que se ejecuta el hilo mueve el cursor a la posició original.

Sabeis si hay alguna forma de suavizar o anular este efecto?.

Gracias.

#include <iostream>
#include <string>
#include <sstream>
#include <stdlib.h>

using namespace std;

void Calculadora(void);
void *Reloj(void *);

/* Función para convertir cualquier tipo
de datos a string.
*/
template <class T>
inline string ToString(const T& t) {
stringstream ss;
ss << t;
return ss.str();
}

/* Función para emular al gotoxy en la consola de
Linux.
*/
inline string gotoxy(const int& x,const int& y) {
return "\33[" + ToString(x) + ";" + ToString(y) + "H";
}

int main()
{
   pthread_t *mihilo=new pthread_t;
   
   
   if(pthread_create(mihilo,NULL,Reloj,NULL))
   {
        cout<<"Error";
   }
   
   Calculadora(); 
   
}

void Calculadora(void)
{
  int n1,n2;
  n1=0;
while(n1!=-1)
{
  system("clear");
  cout<<gotoxy(8,4)<<"Introduce el primer numero: ";
  cin>>n1;
 
  cout<<gotoxy(8,4)<<"Introduce el segundo numero: ";
  cin>>n2;
 
  cout<< gotoxy(8,4)<<"El resultado de la operacion es:"<< n1+n2<<"\n";
  cin>>n1;
 
}


}

void *Reloj(void *arg)
{

time_t rawtime;
bool a;

a=false;


    while(a==false)
      {
         time( &rawtime );
         //system("clear"); // Importante para no sobreescribir la pantalla.
// Emular goto(x, y);
         cout << gotoxy(2,4) << ctime(&rawtime )<< "\n";

      }
}

Khronos14

En Windows existe una API similar a gotoxy, se llama SetConsoleCursorPosition.

Saludos.