我已尝试使用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");
这非常有效,非常感谢您的时间和帮助
答案 0 :(得分:6)
就像CyberShadow指出的那样,你必须使用\ x1B或\ 033。它应该可以正常工作,只要你在Linux上。 Windows虽然不支持这些代码。在这里,您必须使用std.c.windows.windows中的API函数SetConsoleTextAttribute。
答案 1 :(得分:3)
字符串中有拼写错误:使用\x1B
代替\0x1B
。
D不支持字符串中的\e
转义码,请使用\x1B
。
答案 2 :(得分:2)