web-dev-qa-db-ja.com

WindowsのターミナルアプリケーションのCカラーテキスト

「textcolor();」を知っていますC++用であり、UNIX用のメソッドを見てきました...しかし、Windows用の方法もありますか?

#include <stdio.h>
int main()
{
    printf("\ntest - C programming text color!");
    printf("\n--------------------------------");
    printf("\n\n\t\t-BREAK-\n\n");
    textcolor(15);
    printf("WHITE\n");
    textcolor(0);
    printf("BLACK\n");
    textcolor(4);
    printf("RED\n");
    textcolor(1);
    printf("BLUE\n");
    textcolor(2);
    printf("GREEN\n");
    textcolor(5);
    printf("Magenta\n");
    textcolor(14);
    printf("YELLOW\n");
    textcolor(3);
    printf("CYAN\n");
    textcolor(7);
    printf("LIGHT GRAY\n");
}

私はネット上で何も見つけることができません...スタックオーバーフローの善良な人々が助けてくれることを願っています:D

C++ではなくCをお願いします

18
Joe DF

CおよびWindows固有のソリューションが必要なため、Win32 APIでSetConsoleTextAttribute()関数を使用することをお勧めします。コンソールへのハンドルを取得して、適切な属性で渡す必要があります。

簡単な例として:

/* Change console text color, then restore it back to normal. */
#include <stdio.h>
#include <windows.h>

int main() {
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO consoleInfo;
    Word saved_attributes;

    /* Save current attributes */
    GetConsoleScreenBufferInfo(hConsole, &consoleInfo);
    saved_attributes = consoleInfo.wAttributes;

    SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE);
    printf("This is some Nice COLORFUL text, isn't it?");

    /* Restore original attributes */
    SetConsoleTextAttribute(hConsole, saved_attributes);
    printf("Back to normal");

    return 0;
}

使用可能な属性の詳細については、 ここ を参照してください。

お役に立てれば! :)

35
Miguel
3
John Zwinck