在窗口终端上更改卡雷特的形状



我想将我的控制台应用程序的文本光标(插入符号)从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";

相关内容

  • 没有找到相关文章

最新更新