在win32的窗口程序中加入控制台console窗口

本文介绍了如何在Win32窗口程序中创建并重定向控制台输出。通过包含特定头文件,定义`redirectIOToConsole()`函数,并在`WinMain()`中调用该函数,可以实现窗口程序与控制台的交互,使得程序同时拥有窗口界面和控制台输出功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在win32的窗口程序中加入控制台console窗口:

(1)头文件:

#include <io.h>

#include <fcntl.h>

#include <iostream>

using namespace std;

(2)redirectIOToConsole()函数:

//使用控制台的输出

void redirectIOToConsole( void )

{

    AllocConsole();

 

    // Get the handle for STDOUT's file system.

    HANDLE stdOutputHandle = GetStdHandle( STD_OUTPUT_HANDLE );

 

    // Redirect STDOUT to the new console by associating STDOUT's file

    // descriptor with an existing operating-system file handle.

    int hConsoleHandle = _open_osfhandle( (intptr_t)stdOutputHandle, _O_TEXT );

    FILE *pFile = _fdopen( hConsoleHandle, "w" );

    *stdout = *pFile;

    setvbuf( stdout, NULL, _IONBF, 0 );

 

    // This call ensures that iostream and C run-time library operations occur 

    // in the order that they appear in source code.

    ios::sync_with_stdio();

}

(3)在WIN32的WinMain()函数中调用redirectIOToConsole():

int WINAPI WinMain(,,,)

{

    redirectIOToConsole();//使用控制台的输出

    ……

}

 

(4)在要输出时直接调用: cout<< "hello,world!"<< endl;

则可以看到除了有原来的WIN32窗口,还多加了一个控制台窗口,且里面可有输出.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值