Estaba buscando una forma de hacer esto yo mismo y encontré una solución simple.
Supongo que comenzó un Proyecto Win32 predeterminado (aplicación Windows) en Visual Studio, que proporciona una función "WinMain". De forma predeterminada, Visual Studio establece el punto de entrada en "SUBSISTEMA: WINDOWS". Es necesario cambiar primero esto de ir a:
Proyecto -> Propiedades -> Enlazador -> Sistema -> Subsistema
y seleccione "Consola (/ SUBSISTEMA: Consola)" de la lista desplegable.
Ahora, el programa no se ejecutará, ya que se necesita una función "principal" en lugar de la función "WinMain".
Ahora puede agregar una función "principal" como lo haría normalmente en C++. Después de esto, para iniciar el programa GUI, puede llamar a la función "WinMain" desde dentro de la función "principal".
La parte inicial de su programa ahora debe ser algo como esto:
#include <iostream>
using namespace std;
// Main function for the console
int main(){
// Calling the wWinMain function to start the GUI program
// Parameters:
// GetModuleHandle(NULL) - To get a handle to the current instance
// NULL - Previous instance is not needed
// NULL - Command line parameters are not needed
// 1 - To show the window normally
wWinMain(GetModuleHandle(NULL), NULL,NULL, 1);
system("pause");
return 0;
}
// Function for entry into GUI program
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
// This will display "Hello World" in the console as soon as the GUI begins.
cout << "Hello World" << endl;
.
.
.
Result of my implementation
Ahora puede utilizar las funciones de salida de la consola en cualquier parte de su programa de interfaz gráfica de usuario para la depuración o de otro propósitos.
Tenga en cuenta que la ventana de salida de Visual Studio no es la consola. Ambos son "ventanas con texto en ellos", pero son diferentes detrás de las escenas. – MSalters