Windows - Centrar la consola en el esc. de Windows

   
Vista:

Centrar la consola en el esc. de Windows

Publicado por Daniel (16 intervenciones) el 26/12/2008 02:13:25
Hola
Con el cód. que dejo a continuación logro dimensionar la consola,posicionar el cursor en las coordenadas deseadas, lo que no puedo hacer es centrar la consola en el escritorio de windows.-
En este mismo foro Smaugh dejo un buen ejemplo con la función GetSystemMetrics pero esta echo para una ventana, lo que yo quiero es lo mismo pero para implementarlo en mi código(cosa que desconozco como se hace).-

----------------------------------------------------------------------------------------------------------
#include <windows.h>
#include <iostream>

HANDLE consola;
COORD posicion;

using namespace std;

void ResizeWindow(HANDLE hConsole, SHORT xSize, SHORT ySize)
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
BOOL bSuccess;
SMALL_RECT srWindowRect;
COORD coordScreen;
SetConsoleTitle("Ancho/alto de ventana y posicion del cursor a eleccion");

bSuccess = GetConsoleScreenBufferInfo(hConsole, &csbi);
coordScreen = GetLargestConsoleWindowSize(hConsole);
srWindowRect.Right = (SHORT) (min(xSize, coordScreen.X) - 1);
srWindowRect.Bottom = (SHORT) (min(ySize, coordScreen.Y) - 1);
srWindowRect.Left = srWindowRect.Top = (SHORT) 0;
coordScreen.X = xSize;
coordScreen.Y = ySize;
if ((DWORD) csbi.dwSize.X * csbi.dwSize.Y > (DWORD) xSize * ySize)
{
bSuccess = SetConsoleWindowInfo(hConsole, TRUE, &srWindowRect);
bSuccess = SetConsoleScreenBufferSize(hConsole, coordScreen);
}

if ((DWORD) csbi.dwSize.X * csbi.dwSize.Y < (DWORD) xSize * ySize)
{
bSuccess = SetConsoleScreenBufferSize(hConsole, coordScreen);
bSuccess = SetConsoleWindowInfo(hConsole, TRUE, &srWindowRect);
}
return;
}

int main(int argc, char *argv[])
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
ResizeWindow(hStdout,65,20);
consola = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTitle(" Ventana con ancho/alto y posicion del cursor a eleccion");
system("color 70");

int y_down = 1, final = 0, yoElijo = 0;
while ( final < 11 )
{
posicion.Y = y_down;
SetConsoleCursorPosition(consola, posicion);
cout << " Una de estas lineas cambiara su contenido...";
++y_down;
++final;
}

posicion.X= 2;
posicion.Y= 14;
SetConsoleCursorPosition(consola, posicion);

cout << "digite un entero del 1 al 11:";
cin >> yoElijo;

posicion.X= 1;
posicion.Y= yoElijo;
SetConsoleCursorPosition(consola, posicion);
cout << "El contenido de la frase a cambiado... ";

posicion.X= 1;
posicion.Y= 14;
SetConsoleCursorPosition(consola, posicion);

system("color 9A");
cout << "Presione una tecla para cerrar la ventana... ";
system("pause>nul");
return 0;
}
----------------------------------------------------------------------------------------------------------
Espero como siempre que deseen ayudarme.-
Saludos.-
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Centrar la consola en el esc. de Windows

Publicado por Pico (7 intervenciones) el 29/01/2014 17:31:55
La consola es una ventana como otra cualquiera. Se halla su tamaño y posición con GetWindowRect y se mueve con MoveWindow. GetSystemMetrics da el tamaño de la pantalla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar