titulo tipo texto programa ponerle poner personalizar letras letra lenguaje las imprimir grandes gotoxy dev con como color centrar cambiar c++ windows winapi console

tipo - personalizar dev c++



¿Cómo saber si estamos en una consola o en una aplicación de ventana? (2)

Contexto: programación de la biblioteca ac / c ++ win32-mfc

¿Cómo saber si estamos en una consola o en una aplicación de ventana?


No estoy seguro de esto (sin haberlo intentado) pero puede llamar a la función GetStartupInfo que completa una estructura STARTUPINFO.

Tal vez las aplicaciones de consola y de Windows establecieron el marcador STARTF_USESHOWWINDOW del miembro dwFlags de manera diferente y usted podría distinguirlos de esa manera.

Como se mencionó en los comentarios de su pregunta, generalmente no es una buena señal cuando una biblioteca necesita saber tales cosas: cuanto más desacoplado pueda mantenerlo mejor.

Espero que ayude.


Puede determinar si hay una consola conectada actualmente al proceso llamando a la función win32 GetConsoleWindow . Si devuelve NULL, entonces no hay una consola conectada al proceso. Sin embargo, esto no necesariamente le dirá si está ejecutando en una aplicación de ventana o no. Por ejemplo, podría tener una aplicación de ventana que utiliza AllocConsole en el inicio para asignar una consola para la salida de depuración, en cuyo caso tendría ambas al mismo tiempo. El otro problema que puedo ver con lo que describes es que una aplicación puede no tener ventanas ni consola conectada (un servicio de Windows, por ejemplo).

Voy a tener que estar de acuerdo con litb y Martin en este también. Si su biblioteca necesita saber esto, probablemente no esté lo suficientemente desacoplada. Si está utilizando esto para determinar dónde enviar la salida de depuración, por ejemplo, el mejor enfoque sería usar cout o cerr y dejar que la aplicación que está usando la biblioteca se encargue de redirigir la transmisión a donde lo desee.