高级控制台功能的行为受控制台输入和输出模式的影响。创建控制台时,控制台的输入缓冲区将启用以下所有控制台输入模式:
*线路输入模式
*处理输入模式
*回波输入模式
创建控制台屏幕缓冲区时,以下控制台输出模式都将启用:
*处理输出模式
*以EOL输出模式进行包装
所有三种输入模式以及处理后的输出模式都可以一起工作。最好是将所有这些模式作为一个组启用或禁用。当全部启用时,应用程序被称为处于“熟”模式,这意味着处理大多数应用程序。当全部被禁用时,应用程序处于“原始”模式,这意味着输入未被过滤,任何处理都留给应用程序。
应用程序可以使用GetConsoleMode功能来确定控制台的输入缓冲区或屏幕缓冲区的当前模式。您可以通过在SetConsoleMode功能中使用以下值来启用或禁用任何这些模式。请注意,设置一个屏幕缓冲区的输出模式不影响其他屏幕缓冲区的输出模式。
模式 | 描述 | ||||
ENABLE_PROCESSED_INPUT | |||||
与控制台输入句柄一起使用,使系统处理任何系统编辑或控制键输入,而不是将其作为读操作缓冲区中的输入返回。如果线路输入也被启用,则后台和回车符被正确处理。退格键使光标移回一个空格,而不影响光标位置的字符。回车符转换为回车符 - 换行符字符组合。如果启用回声输入模式,并且输出应反映系统编辑,则必须为主动屏幕缓冲区启用处理后的输出。如果启用了处理输入,则无论是否启用行输入,CTRL + C组合将被传递到相应的处理程序。有关控制处理程序的更多信息,请参阅控制台控制处理程序. | |||||
ENABLE_LINE_INPUT | |||||
与控制台输入句柄一起使用时,按ENTER键可使ReadFile和ReadConsole功能返回。如果线路输入模式被禁用,则当输入缓冲区中有一个或多个字符可用时,该函数返回。 | |||||
ENABLE_ECHO_INPUT | |||||
与控制台输入句柄一起使用,使ReadFile或ReadConsole功能读取的键盘输入回传到活动屏幕缓冲区。只有调用ReadFile或ReadConsole的进程具有活动屏幕缓冲区的打开句柄时才会回显字符。除非还启用线路输入,否则无法启用回波模式。活动屏幕缓冲区的输出模式影响显示回显输入的方式。 | |||||
ENABLE_PROCESSED_OUTPUT | |||||
与控制台屏幕缓冲区句柄一起使用,使系统对写入屏幕缓冲区的ANSI控制字符执行适当的操作。处理退格键,制表符,铃,回车符和换行符。标签字符将光标移动到下一个选项卡停止,每八个字符发生。一个响铃的人物听起来很短暂。 | |||||
ENABLE_WRAP_AT_EOL_OUTPUT | |||||
与控制台屏幕缓冲手柄一起使用,当达到当前行的结尾时,使当前输出位置(光标位置)移动到下一行(行)中的第一列。如果到达窗口区域的底部,则窗口原点向下移动一行。该动作具有将窗口的内容向上滚动一行的效果。如果到达屏幕缓冲区的底部,则屏幕缓冲区的内容将向上滚动一行,屏幕缓冲区的顶行将被丢弃。如果禁用此模式,则该行中的最后一个字符将覆盖任何后续字符。 |