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

来源:互联网 发布:刷机恢复数据 编辑:程序博客网 时间:2024/04/30 00:48
 

在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窗口,还多加了一个控制台窗口,且里面可有输出.

原创粉丝点击