La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1948 - POSICIONAMIENTO EN LA PANTALLA
Autor:  Naty May
Tengo Microsoft Visual Studio 6.0, estoy manejando C++.
Necesito ayuda para manejar el posicionamiento de coordenadas en la pantalla tipo turbo C con gotoxy() y para limpiar la pantalla con clrscr(),
Porqué no funcionan en C++?,hay alguna solución...?

Gracias...

  Respuesta:  Hilson Carballo
ára usar dados es ete codigo que muestro a continuacion

#include <windows.h>
#include <stdlib.h>
main (){

int psx=10,psy=10;
//inicia para las posiones
HANDLE hStdOut;
COORD coord;
hStdOut = GetStdHandle (STD_OUTPUT_HANDLE);
coord.X = psx;
coord.Y = psy;
SetConsoleCursorPosition (hStdOut, coord);

system("cls"); //limpia pantalla

return 0;
}

  Respuesta:  Victor Garcia
A las respuestas anteriores actualizo y pongo ejemplo 100 por 100 funcioninal y mejorado.

// Borrar Pantalla.cpp : Defines the entry point for the console application.
//
#include <stdafx.h>
#include <stdio.h>
#include <windows.h>
#include <wincon.h>
#include <winbase.h>

/*--------------------------------------------------------------------------*/
void gotoxy(SHORT x, SHORT y)
{
COORD pantalla;

pantalla.X=(short) x;
pantalla.Y=(short) y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pantalla);
}
/*--------------------------------------------------------------------------*/
void clrscr(void)
{
int y;
char espacios[81]; /* 80x24 */

for (y=0; y < 80; y++) espacios[y] = ' ' ;
{
espacios[80] = '\0' ;
}

for (y=0; y < 24; y++)
{
gotoxy(0,y);
printf(espacios);
}
gotoxy(0,0);
}
/*--------------------------------------------------------------------------*/

int main(int argc, char* argv[])
{
clrscr();
printf("Mensaje Primero!\n");
getchar();
clrscr();
gotoxy(60,15);printf("Mensaje Segundo!\n");
getchar();
return 0;
}

  Respuesta:  javi_v
Supongo que te refieres a un proyecto en modo consola, yo eso con VC6.0 lo consegui de la siguiente forma:

/*--------------------------------------------------------------------------*/

#include <windows.h>
#include <wincon.h>
#include <winbase.h>
...

/*--------------------------------------------------------------------------*/
void gotoxy(SHORT x, SHORT y)
{
COORD pantalla;

pantalla.X=(short) x;
pantalla.Y=(short) y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pantalla);
}
/*--------------------------------------------------------------------------*/
void clrscr(void)
{
int y;
char espacios[81]; /* 80x24 */

memset(espacios,\' \',80);
for (y=0; y<24; y++)
{
gotoxy(0,y);
printf(espacios);
}
}
/*--------------------------------------------------------------------------*/

A ver si te sirve, busca informacion en la ayuda de VC sobre las \'Console Functions\'
(SetConsoleCursorPosition,GetConsoleCursorPosition, ...) hay muchas funciones de
utilidad para programar en modo consola.
deu

  Respuesta:  Jorge Esteban Villegas Murillo
No te puedo aconsejar sobre las coordenadas para colocar en la pantalla (gotoxy(x,y)), pero para poder limpiar la pantalla debes incluir en el programa la librería <conio.h> y <stdlib.h> y luego donde quieras limpiar la pantalla poner system ("cls");.

Nota: no recuerdo a ciencia cierta cuál de las dos librerías es, pero por precaución pon las dos.
Espero que mi consejo te ayude.

  Respuesta:  Juanjo
Estas funciones no pueden usarse en Microsoft Visual porque en ese compilador no estan definidas. No se si ese compilador tiene alguna que las sustituyan.
Para hacer clrscr() no hay mas que ir borrando caracter a caracter todos los de la pantalla imprimiendo con cout, un blanco.
Como eso quiza lleve tiempo, mejor seria usar la rutina de la bios que lo hace: con la funcion int86() se llama a la rutina de la bios 10H, funcion AH y se escribe un blanco ´ ´. Para gotoxy() igual, solo que para posicionarte se usa la rutina 10H, funcion 2H
Yo son las unicas formas que conozco, asi que espero haberte ayudado. Si es que sirviesen y no hubieses entendido lo de las rutinas bios comentamelo.