未记录的控制台输入模式标志

问题描述 投票:0回答:1

我正在使用 Rust 开发我的库,以便使用 Windows API 在终端中制作 GUI。

虽然我实现了获取和设置控制台模式,但我注意到对于输入模式,默认值为 503。我去检查了 文档 的标志,但是没有记录值 128 和 256,没有它们你可以' t 得到 503.

无论哪种方式,它们都是默认启用的,如文档中所述:

创建控制台时,默认启用除

ENABLE_WINDOW_INPUT
ENABLE_VIRTUAL_TERMINAL_INPUT
之外的所有输入模式。

当包含 128 和 256 时,计算结果为 503,这是我得到的值!

这两个标志是微软不想记住的过去吗?他们的功能是什么?

我已经在网上搜索过了,但找不到关于文档中缺少的两个标志的任何评论。

windows winapi console
1个回答
0
投票

模式是一个位掩码。整数值 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 上。我唯一能在网上找到的是以下简介:

https://txwizard.github.io/WizardWrx_NET_API/api/WizardWrx.ConsoleStreams.StandardHandleInfo.ConsoleModes.html

姓名 说明
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。
© www.soinside.com 2019 - 2024. All rights reserved.