SetConsoleMode标志中ENABLE_PROCESSED_INPUT的含义

时间:2012-07-09 08:14:02

标签: c++ winapi

在Windows API中,有SetConsoleMode函数。 在模式值中,我无法理解ENABLE_PROCESSED_INPUT值。 MSDN文档说

ENABLE_PROCESSED_INPUT : value (0x0001):  CTRL+C由系统处理,不会放在输入缓冲区中。如果正在由ReadFileReadConsole读取输入缓冲区,则系统会处理其他控制键,而不会在ReadFileReadConsole缓冲区中返回。如果还启用了ENABLE_LINE_INPUT模式,则系统将处理退格,回车符和换行符。

这是否意味着当设置此标志时,CTRL+C未放入输入缓冲区(因为它由系统处理)?或者不是(CTRL+C放在输入缓冲区中)?这个解释让我感到困惑..请有人向我解释一下吗?

2 个答案:

答案 0 :(得分:3)

这意味着如果设置了ENABLE_PROCESSED_INPUT标志, Ctrl + C 将不会被放入输入缓冲区(相反,系统将处理它并且将SIGINT信号发送到控制台中运行的进程。

相同的行为适用于ENABLE_LINE_INPUT标志:如果已设置,则backspacecarriage returnline feed等字符不会放入输入缓冲区并进行处理由系统(从缓冲区中删除字符并自动处理行尾)。

答案 1 :(得分:0)

ENABLE_PROCESSED_INPUTvalue (0x0001)CTRL+C由系统处理,未放入输入缓冲区。

所以基本上是的,没有任何东西进入输入缓冲区,因为特殊符号由系统处理。