-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathConsole.cpp
48 lines (43 loc) · 1.32 KB
/
Console.cpp
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
45
46
47
48
/*
MINI VIRTUAL ANALOG SYNTHESIZER
Copyright 2014 Kenneth D. Miller III
Console Functions
*/
#include "StdAfx.h"
#include "Console.h"
// formatted write console output
int PrintConsole(HANDLE out, COORD pos, char const *format, ...)
{
va_list ap;
va_start(ap, format);
char buf[256];
vsnprintf_s(buf, sizeof(buf), format, ap);
DWORD written;
WriteConsoleOutputCharacter(out, buf, strlen(buf), pos, &written);
return written;
}
// formatted write console output with an attribute
int PrintConsoleWithAttribute(HANDLE out, COORD pos, WORD attrib, char const *format, ...)
{
va_list ap;
va_start(ap, format);
char buf[256];
vsnprintf_s(buf, sizeof(buf), format, ap);
DWORD written;
WriteConsoleOutputCharacter(out, buf, strlen(buf), pos, &written);
FillConsoleOutputAttribute(out, attrib, written, pos, &written);
return written;
}
// clear the console window
void Clear(HANDLE hOut)
{
CONSOLE_SCREEN_BUFFER_INFO bufInfo;
static COORD const zero = { 0, 0 };
DWORD written;
DWORD size;
GetConsoleScreenBufferInfo(hOut, &bufInfo);
size = bufInfo.dwSize.X * bufInfo.dwSize.Y;
FillConsoleOutputCharacter(hOut, 0, size, zero, &written);
FillConsoleOutputAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE, size, zero, &written);
SetConsoleCursorPosition(hOut, zero);
}