aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/winpty/misc/Win32Write1.cc
blob: 6e5bf9668228f42c5d340887d0fc524e9f7d868f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* 
 * A Win32 program that scrolls and writes to the console using the ioctl-like
 * interface.
 */

#include <stdio.h>
#include <windows.h>

int main()
{
    HANDLE conout = GetStdHandle(STD_OUTPUT_HANDLE);

    for (int i = 0; i < 80; ++i) {

        CONSOLE_SCREEN_BUFFER_INFO info;
        GetConsoleScreenBufferInfo(conout, &info);

        SMALL_RECT src = { 0, 1, info.dwSize.X - 1, info.dwSize.Y - 1 };
        COORD destOrigin = { 0, 0 };
        CHAR_INFO fillCharInfo = { 0 };
        fillCharInfo.Char.AsciiChar = ' ';
        fillCharInfo.Attributes = 7;
        ScrollConsoleScreenBuffer(conout,
                                  &src,
                                  NULL,
                                  destOrigin,
                                  &fillCharInfo);

        CHAR_INFO buffer = { 0 };
        buffer.Char.AsciiChar = 'X';
        buffer.Attributes = 7;
        COORD bufferSize = { 1, 1 };
        COORD bufferCoord = { 0, 0 };
        SMALL_RECT writeRegion = { 0, 0, 0, 0 };
        writeRegion.Left = writeRegion.Right = i;
        writeRegion.Top = writeRegion.Bottom = 5;
        WriteConsoleOutput(conout, 
                           &buffer, bufferSize, bufferCoord,
                           &writeRegion);

        Sleep(250);
    }
    return 0;
}