SetConsoleMode() 和 ENABLE_VIRTUAL_TERMINAL_PROCESSING?

Chr*_*url 6 c c++ windows console

根据 MSDN,该函数的dwMode参数SetConsoleMode()应该允许ENABLE_VIRTUAL_TERMINAL_PROCESSING(0x04)。

我的 Visual Studio(2013 Ultimate with Update 5)没有定义这个常量。它只有这两个:

#define ENABLE_PROCESSED_OUTPUT    0x0001
#define ENABLE_WRAP_AT_EOL_OUTPUT  0x0002
Run Code Online (Sandbox Code Playgroud)

ENABLE_VIRTUAL_TERMINAL_PROCESSING移除了吗?

我试图像这样使用它,以便我可以使用 VT100 转义序列控制光标。

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD dwMode = 0;
GetConsoleMode(hOut, &dwMode);
dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
SetConsoleMode(hOut, dwMode);
Run Code Online (Sandbox Code Playgroud)

如需参考,请参阅此 MSDN文章

Mic*_*ati 6

如果你的 SDK 太旧,ENABLE_VIRTUAL_TERMINAL_PROCESSING可能没有定义。

您可以使用以下代码手动定义它:

#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
#endif
Run Code Online (Sandbox Code Playgroud)

  • 是:它需要内部版本号为 10586 或更高的 Windows 10。 (5认同)
  • @AbhinavGauniyal - **API 的** 最低支持客户端是 Windows 2000。特定设置可能只有更高版本的操作系统才支持。 (4认同)
  • 为了增加更多的混乱,他们将最低支持的客户端写为 2000。 (3认同)