창 프로그램에 컨트롤러 추가 및 입력 출력 흐름 재귀속

4031 단어 입출력 흐름
창이 활성화되지 않았을 때 표준 출력의 호출이 올바르지 않을 것 같습니다.추궁할 필요가 있다.
#include <io.h>
#include <fcntl.h>
#include <stdio.h>

// AllocConsole();

void printConsole(std::string s)
{
    HANDLE g_Con = GetStdHandle(STD_OUTPUT_HANDLE);
    DWORD dwWritten=0;
    WriteConsoleA(g_Con,s.c_str(),s.length(),&dwWritten,NULL);
}
void RelocationConsole(void)
{
    HANDLE  hStd;
    int     fd;
    FILE    *file;

    //                   

    hStd = GetStdHandle(STD_INPUT_HANDLE);
    fd = _open_osfhandle(reinterpret_cast<intptr_t>(hStd), _O_TEXT); //     
    file = _fdopen(fd, "r");
    setvbuf(file, NULL, _IONBF, 0); //    
    *stdin = *file;

    //                   

    hStd = GetStdHandle(STD_OUTPUT_HANDLE);
    //COORD size;
    //size.X = ConsoleWidth;
    //size.Y = ConsoleHeight;
    //SetConsoleScreenBufferSize(hStd, size);
    fd = _open_osfhandle(reinterpret_cast<intptr_t>(hStd), _O_TEXT); //    
    file = _fdopen(fd, "w");
    setvbuf(file, NULL, _IONBF, 0); //    
    *stdout = *file;

    //                   

    hStd = GetStdHandle(STD_ERROR_HANDLE);
    fd = _open_osfhandle(reinterpret_cast<intptr_t>(hStd), _O_TEXT); //     
    file = _fdopen(fd, "w");
    setvbuf(file, NULL, _IONBF, 0); //    
    *stderr = *file;
}

좋은 웹페이지 즐겨찾기