2008-10-10 15 views
5

Antecedentes: Desarrollamos aplicaciones win32 y utilizamos el "Kit de herramientas Thompson" en Windows para proporcionarnos un shell unix que usamos como nuestra línea de comandos.Cómo escribir en la consola en una aplicación GUI

Tenemos un programa de GUI (con WinMain y mensaje de bucle) que queremos escribir en la consola, pero printf y así sucesivamente no funcionan, incluso cuando lanzamos el programa desde la consola. ¿Cómo podemos escribir en la consola desde un programa GUI? Necesitamos imprimir texto allí para que un sistema de compilación automatizado pueda mostrar mensajes de error, y así sucesivamente.

Gracias.

+0

Esto parece ser un duplicado de otra pregunta reciente: [http://stackoverflow.com/questions/191842/how-do-i-get-console-output-in-c-with-a-windows-program ] (http://stackoverflow.com/questions/191842/how-do-i-get-console-output-in-c-with-a-windows-program) –

Respuesta

0

en algún lugar de la Configuración del proyecto de Visual Studio puede activar una consola, suponiendo que esté utilizando VS. (No se puede decir dónde porque actualmente no lo tengo)

0

En lugar de iniciar sesión en la consola, inicie sesión en un archivo y luego realice un seguimiento del archivo con una aplicación de interfaz gráfica independiente. Esto mantiene la consola despejada y le proporciona un registro más persistente de su registro, que ocasionalmente es extremadamente útil. Hay varias bibliotecas que harán la mayor parte de esto por ti, o puedes mantenerlo simple y solo hazlo tú mismo.

+2

No se puede canalizar la salida a otros programas de esa manera . Además, si un usuario desea iniciar sesión en un archivo, lo canaliza a un archivo. Iniciar sesión en un archivo no es flexible. – Roel

0

Básicamente tienes que crear una consola tú solo con AllocConsole, AttachConsole. Después de eso, debe obtener identificadores estándar con GetStdHandle y "asocia un descriptor de archivo de tiempo de ejecución de C con un identificador de archivo de sistema operativo existente" con la ayuda de _open_osfhandle.

El asa devuelta se puede utilizar para sobrescribir crt stdin y stdout. Después de eso, todos los métodos de crt como printf deberían funcionar.

Cuestiones relacionadas