我想将我的控制台应用程序的文本光标(插入符号)从BLOCK(默认值)设置为_或|
我删除闪烁下划线在控制台/cmd提示符-但它没有提到如何修改光标。关于https://learn.microsoft.com/en-us/windows/console/setconsolecursorinfo?redirectedfrom=MSDN的文档对我来说不是直接微不足道的。
由Raymond Chen推荐(对于不知道他是谁的人:https://devblogs.microsoft.com/oldnewthing/)
这是我使用的块游标:
HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cursorInfo;
GetConsoleCursorInfo(out, &cursorInfo);
cursorInfo.bVisible = true;
cursorInfo.dwSize = 100;
SetConsoleCursorInfo(out, &cursorInfo);
对于下划线游标:
HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cursorInfo;
GetConsoleCursorInfo(out, &cursorInfo);
cursorInfo.bVisible = true;
cursorInfo.dwSize = 10;
SetConsoleCursorInfo(out, &cursorInfo);
我们可以使用微软首选的现代解决方案,即使用控制台虚拟终端序列。
在做任何事情之前,我们必须将控制台模式设置为ENABLE_VIRTUAL_TERMINAL_PROCESSING如:
DWORD dwMode{};
GetConsoleMode(mHandleConsoleOutput, &dwMode);
dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
SetConsoleMode(mHandleConsoleOutput, dwMode);
之后,我们可以使用这些序列,例如,使用
使插入符号的形状成为一个闪烁块:cout << "x1b[1x20q";