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

我的Visual Studio(带有更新5的2013 Ultimate)未定义该常数。它只有两个:

#define ENABLE_PROCESSED_OUTPUT    0x0001
#define ENABLE_WRAP_AT_EOL_OUTPUT  0x0002
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);

作为引用,请参见此MSDN article

最佳答案

如果您的SDK过旧,则可能未定义ENABLE_VIRTUAL_TERMINAL_PROCESSING

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

#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
#endif

关于c++ - SetConsoleMode()和ENABLE_VIRTUAL_TERMINAL_PROCESSING?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38772468/

10-14 19:00