Win32 stdout

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by BuRuNdUk, 17 Mar 2018.

  1. BuRuNdUk

    BuRuNdUk New Member

    Joined:
    8 Mar 2018
    Messages:
    3
    Likes Received:
    1
    Reputations:
    0
    Доброго времени суток. Помогите новичку, пожалуйста, разобраться. После создания и освобождения доп.консоли не могу писать в главную консоль. В чем проблема? Прошу прощения, я не знаю как выделить код.


    #include <windows.h>
    #include <string.h>
    #include <unistd.h>

    LPCTSTR Phrase = "Test"; // фраза, выводимая на стандартный вывод

    int main(void)
    {
    HANDLE hMainConsoleOut; // дескриптор вывода главной консоли
    HANDLE hAddConsoleOut; // дескриптор вывода доп. консоли
    DWORD dwOchars; // считано символов
    BOOL OutResult; // результат вывода строки на экран(TRUE/FALSE)

    // получаем дескриптор вывода и пишем в главную консоль
    hMainConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);

    WriteConsole(hMainConsoleOut,
    Phrase,
    strlen(Phrase),
    &dwOchars,
    NULL);

    FreeConsole();

    // создаем доп. консоль, получаем дескриптор и отображаем фразу
    AllocConsole();

    hAddConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);

    WriteConsole(hAddConsoleOut,
    Phrase,
    strlen(Phrase),
    &dwOchars,
    NULL);

    sleep(2);

    CloseHandle(hAddConsoleOut);

    FreeConsole();

    // пробуем снова писать в главную консоль
    OutResult = WriteConsole(hMainConsoleOut,
    Phrase,
    strlen(Phrase),
    &dwOchars,
    NULL);

    // Ошибка!
    if(OutResult == FALSE)
    return -1;

    sleep(2);

    return 0;
    }
     
  2. neviens

    neviens Member

    Joined:
    9 Oct 2013
    Messages:
    82
    Likes Received:
    28
    Reputations:
    3
    У процесса может быть только одна консоль.
    Она создаётся при старте консольного exe, или при помощи AllocConsole(); ,
    а убивается при завершении процесса или с FreeConsole();
    Стандартные хендлы закрывать не надо.
     
    BuRuNdUk likes this.
  3. BuRuNdUk

    BuRuNdUk New Member

    Joined:
    8 Mar 2018
    Messages:
    3
    Likes Received:
    1
    Reputations:
    0
    Благодарю. :)