修改文本突出显示如何工作?

How does modifying text highlighting work?

我们都熟悉文本突出显示。您将鼠标悬停在 Windows OS 上任何应用程序中的任何 "text" 上,您的光标会变为 I-Beam,您可以单击并拖动文本以突出显示它。可以将此突出显示的文本复制到剪贴板以备后用。

一些应用程序通过更改颜色、不透明度甚至形状来修改默认突出显示行为。一些应用程序允许列选择(例如 Visual Studio "alt-click-drag" 创建像突出显示一样的框)

我已经在 Internet 的深处搜索过,但我似乎无法找到可靠的信息来源来解释如何修改文本突出显示的行为。

我将如何实现 column/block 文本选择,并在已编译的应用程序中修改突出显示文本的外观。

由于应用程序可以通过各种自定义方式执行此操作,因此没有单一的解决方案来更改所有这些应用程序设置文本样式的方式。select离子。

许多人将依靠当前的配色方案(使用 GetSysColor)来确定高亮颜色。因此,您可以修改方案,并可能影响许多应用程序使用的颜色。

要以编程方式执行此操作,您将使用 SetSysColors 更改 COLOR_HIGHLIGHT 和 COLOR_HIGHLIGHTTEXT 值。

其他应用程序可能依赖于当前主题(使用 GetThemeColor)。要影响那些您必须 select 具有您想要的颜色(可能还有其他样式选择)的不同主题。

很多应用程序都使用自己的硬编码配色方案,因此您根本无法以编程方式进行。

我不确定您的问题的 Web 应用程序部分是什么意思。 Web 应用程序是一些 HTML、JS 和 CSS,它们使浏览器与您的系统交互。 Web 应用程序提供的任何自定义选择(着色)逻辑都必须由浏览器实现。

另外你必须意识到“(文本)选择”是一个相当虚拟的原则。当应用程序收到 WM_COPY 消息时,它可以只渲染一个彩色形状(如蓝色矩形)并将 something 复制到剪贴板。

Windows 在 basic substring selection functionality for (rich) edit controls 中提供(即开始和结束位置),但对于列选择等自定义内容,需要自定义代码。

Making a rectangular selection in a RichTextBox with Alt-Left-Mouse sweep? 中阅读更多相关信息。