我正在使用 Rust 开发我的库,以便使用 Windows API 在终端中制作 GUI。
虽然我实现了获取和设置控制台模式,但我注意到对于输入模式,默认值为 503。我去检查了 文档 的标志,但是没有记录值 128 和 256,没有它们你可以' t 得到 503.
无论哪种方式,它们都是默认启用的,如文档中所述:
创建控制台时,默认启用除
和ENABLE_WINDOW_INPUT
之外的所有输入模式。ENABLE_VIRTUAL_TERMINAL_INPUT
当包含 128 和 256 时,计算结果为 503,这是我得到的值!
这两个标志是微软不想记住的过去吗?他们的功能是什么?
我已经在网上搜索过了,但找不到关于文档中缺少的两个标志的任何评论。
模式是一个位掩码。整数值 503 包含以下标志,如
wincon.h
和 consoleapi.h
中所定义:
0x0001 ENABLE_PROCESSED_INPUT
0x0002 ENABLE_LINE_INPUT
0x0004 ENABLE_ECHO_INPUT
0x0010 ENABLE_MOUSE_INPUT
0x0020 ENABLE_INSERT_MODE
0x0040 ENABLE_QUICK_EDIT_MODE
0x0080 ENABLE_EXTENDED_FLAGS
0x0100 ENABLE_AUTO_POSITION
你问的两个标志是
ENABLE_EXTENDED_FLAGS
和ENABLE_AUTO_POSITION
。
我在 MSDN 上唯一提到的
ENABLE_EXTENDED_FLAGS
是在SetConsoleMode()
文档中:
价值 意义 ENABLE_QUICK_EDIT_MODE 0x0040 此标志使用户能够使用鼠标选择和编辑文本。要启用此模式,请使用 。要禁用此模式,请在没有此标志的情况下使用ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS
。ENABLE_EXTENDED_FLAGS
有关示例,请参阅如何在 Windows 控制台中禁用用户选择。
ENABLE_AUTO_POSITION
未记录在 MSDN 上。我唯一能在网上找到的是以下简介:
姓名 说明 ENABLE_AUTO_POSITION 虽然在 WinCon.h 中定义,但此标志未记录在案。
我最初的最佳猜测是它与 CMD.EXE 窗口属性表上的“让系统定位窗口”复选框有关,尽管我还没有来检验这个理论。
同一页也提到
ENABLE_EXTENDED_FLAGS
,太:
姓名 说明 ENABLE_EXTENDED_FLAGS 需要启用或禁用扩展标志。
请参阅 ENABLE_INSERT_MODE 和 ENABLE_QUICK_EDIT_MODE。ENABLE_INSERT_MODE 启用后,在控制台窗口中输入的文本将插入当前光标位置,并且该位置之后的所有文本都不会被覆盖。禁用时,以下所有文本都将被覆盖。
要启用此模式,请使用 ENABLE_INSERT_MODE | ENABLE_EXTENDED_FLAGS。
要禁用此模式,请使用不带此标志的 ENABLE_EXTENDED_FLAGS。ENABLE_QUICK_EDIT_MODE 此标志使用户能够使用鼠标选择和编辑文本。
要启用此模式,请使用 ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS。
要禁用此模式,请使用不带此标志的 ENABLE_EXTENDED_FLAGS。