windows 控制台实用代码

#include "general.h"

void ConsoleBase(enum ConsoleColor color, const char* prefix, const char* text, va_list args)
{
    const HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);

    SetConsoleTextAttribute(consoleHandle, White);
    printf("[");

    SetConsoleTextAttribute(consoleHandle, color);
    printf("%s", prefix);

    SetConsoleTextAttribute(consoleHandle, White);
    printf("] ");

    SetConsoleTextAttribute(consoleHandle, DarkWhite);
    vprintf(text, args);
    printf("\n");
}

void ConsoleInfo(const char* text, ...)
{
    va_list args;
    va_start(args, text);
    ConsoleBase(Cyan, "i", text, args);
    va_end(args);
}

void ConsoleWarning(const char* text, ...)
{
    va_list args;
    va_start(args, text);
    ConsoleBase(Yellow, "w", text, args);
    va_end(args);
}

void ConsoleError(const char* text, ...)
{
    va_list args;
    va_start(args, text);
    ConsoleBase(Red, "e", text, args);
    va_end(args);
}

void ConsoleSuccess(const char* text, ...)
{
    va_list args;
    va_start(args, text);
    ConsoleBase(Green, "s", text, args);
    va_end(args);
}

void ConsoleTitle(const char* name)
{
    const HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);

    SetConsoleTextAttribute(consoleHandle, Purple);
    printf("%s\n", name);

    SetConsoleTextAttribute(consoleHandle, DarkWhite);
    printf("build on %s\n\n", __DATE__);
}
1