【发布时间】:2012-02-19 16:17:40
【问题描述】:
我已经尝试过使用 writeln() 函数的转义序列,我还尝试将它们与从 std.c.stdlib 模块导入的 printf() 函数一起使用,但它只打印一个空行。
printf("\0x1B[5;32;40m Blink Text");
printf("\e[5;32;40m Blink Text\e[m");
writeln("\0x1b\x5b1;31;40m\tColor");
这些都不起作用。
我能想到的都试过了,有办法吗?
搜索 D 网站的图书馆参考对我没有帮助。
编辑:解决方案
好的,所以我尝试导入函数 SetConsoleTextAttribute,正如 Mars 所建议的那样:
extern (Windows) bool SetConsoleTextAttribute(void*, ushort);
我还导入了另一个函数(我只是猜想我需要导入,因为我以前没有 Win 编程经验)
extern (Windows) void* GetStdHandle(uint);
并且简单的调用了这两个函数
auto handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, FOREGROUND_BLUE);
writeln("In Color");
这很好用,非常感谢大家的时间和帮助
【问题讨论】: