Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Llevar la consola a primer plano

Iniciado por marcode, 22 de Noviembre de 2006, 06:25:15 PM

« anterior - próximo »

marcode

Tengo un programa en C++ en el que uso una ventana de consola y otra de windows.  

Estando en la de windows, en ocasiones necesito ver el contenido del texto de la consola que se encuentra normalmente tapada por otras o por la propia ventana, pero me gustaría que emergiera automáticamente por encima del resto de ventanas ante un determinado evento.

¿cómo puedo llevar la de consola al frente?, ¿alguien conoce alguna función o truco?
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

Zaelsius

Usa FindWindow para obtener el handle de tu ventana, y luego usa ShowWindow para traerla al frente.

shephiroth

Se que no va mucho al tema, pero ya que estamos, como se crea/destruye la ventana de consola????

tamat

en los settings de visual hay un sitio donde pone subsystem:console o subsystem:windows pero creo que en modo windows tiene que haber un winmain en lugar de un main.
Por un stratos menos tenso

shephiroth

No me refiero iniciar el programa con/sin consola, sino como crearla y destruirla en ejecucion. O solo se puede iniciar el programa con consola, y oculta al iniciar, y mostrarla cuando se quiera?

senior wapo

Si. Necesitas crear la consola primero con AllocConsole() y destruirla con FreeConsole().

Google para mas info.

marcode

Bien, ya casi lo tengo.

Despues de romperme un poco el coco para ver de donde obtenía los parámetros que tenía que pasar a FindWindow he visto que con el nombre de la ventana era suficiente, pero he tenido que renombrarla al principio del programa.

SetConsoleTitle("Consola");

Despues obtengo el handle y muestro la ventana, pero hay un pequeño fallo.

HWND hwnd = FindWindow( NULL, "Consola" );
ShowWindow( hwnd, SW_SHOW );

La ventana no aparece en primer plano, sólo cuando uso SW_SHOWNA emerge, pero la ventana no queda activa. Esto también puede ser útil en ocasiones,  pero lo raro es que no funcione SW_SHOW.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

Zaelsius

Puedes intentar activar la ventana con SetActiveWindow o SetForegroundWindow. No sé si te servirán pero ahí queda : P

marcode

Sí, usando despues SetForegroundWindow funciona. Lo dejaré así.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.