//1. 首先调用AllocConsole创建一个控制台窗口
AllocConsole();
//2. 但此时调用cout或者printf都不能正常输出文字到窗口(包括输入流cin和scanf), 所以需要如下重定向输入输出流:
FILE* stream;
freopen_s(&stream, "CON", "r", stdin);//重定向输入流
freopen_s(&stream, "CON", "w", stdout);//重定向输入流
#pragma region 选用
//3. 如果我们需要用到控制台窗口句柄,可以调用FindWindow取得:
const LPCSTR CONSOLE_TITLE = "MyConsole";
HWND _consoleHwnd;
SetConsoleTitleA("MyConsole");//设置窗口名
for (int i = 0; i < 100; i++)
{
_consoleHwnd = FindWindowA(NULL, CONSOLE_TITLE);
if (_consoleHwnd)
break;
Sleep(100);
}
//4. 然后还需要输出流句柄:
HANDLE _handleOutput;
_handleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
#pragma endregion
//5. 完成以上工作后,就能够创建一个控制台窗口,并能够使用cout标准输出流输出文字到其上
cout << "Hello World!" << endl;
//6.在不需要的时候请调用FreeConsole释放控制台窗口:
FreeConsole();
引用 : 让Win32窗口程序拥有控制台窗口