我正在编写一个应用程序,并想打印带下划线的文本。我做错了什么?
我正在使用 C# 中的“翻译”代码,通常它在 C# 中效果很好,但在 C++ 中却不行。修复错误后,代码根本不起作用。它显示了一些通常不会显示的字符。这就是它打印的内容(https://i.imgur.com/V1X2uWk.png)
这是我使用的代码
auto DllHandler = GetStdHandle(-11);
unsigned int Mode;
GetConsoleMode(DllHandler,PDWORD(Mode));
Mode |= 4;
SetConsoleMode(DllHandler,DWORD(Mode));
cout << "\x1b[5mUnderlined \x1b[0mtext" << endl;
这是原始(C#)代码:
[DllImport("kernel32.dll", SetLastError = true)]
public static extern IntPtr GetStdHandle(int nStdHandle);
[DllImport("kernel32.dll")]
public static extern IntPtr GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
[DllImport("kernel32.dll")]
public static extern IntPtr SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
var DllHandler = Kernel32.GetStdHandle(-11);
uint Mode;
GetConsoleMode(DllHandler,out Mode);
Mode |= 4;
SetConsoleMode(DllHandler, Mode);
Console.Write("\x1b[5mUnderlined \x1b[0mText");
提前致谢。