我直到最近才知道这个快捷键。我一直用的是我信赖的右键菜单。
令人遗憾的是,如今几乎没有人再使用 Win32 滚动条了。大家都在使用那些提供自定义滚动条的框架。
Electron 和其他 Web 应用使用 Chromium 滚动条,它没有实现右键菜单,但至少实现了 Shift+点击快捷键。
WPF XAML 框架似乎同时实现了右键菜单和 Shift+点击。
令人沮丧的是,WinUI XAML 框架既没有右键菜单,也没有 Shift+点击快捷键。(不过至少有人已提出请求:https://github.com/Microsoft/microsoft-ui-xaml/issues/11200。)
Qt 框架有多个自定义点,所以实际上取决于每个应用的开发者。你可以通过 SH_ScrollBar_ContextMenu 启用右键菜单,通过 SH_ScrollBar_LeftClickAbsolutePosition 启用"左键点击跳转到指定位置",通过 SH_ScrollBar_MiddleClickAbsolutePosition 启用"中键点击跳转到指定位置"。
真好,等到我终于了解到滚动条的快捷键(Shift+点击)时,整个生态已经碎片化到让我无法确定它是否能用了。
关于作者:Raymond Chen Raymond 参与 Windows 的演进已超过 30 年。2003 年,他创办了名为 The Old New Thing 的网站,其受欢迎程度远远超出了他最疯狂的想象,这一发展至今仍让他惴惴不安。该网站还催生了一本恰好同样名为 The Old New Thing 的书(Addison Wesley 2007)。他偶尔会在 Windows Dev Docs 的 Twitter 账号上讲述一些不带任何有用信息的故事。
评论区:
Andreas Rejbrand: “遗憾的是,如今几乎没有人再使用 Win32 滚动条了。大家都在使用那些提供自定义滚动条的框架。”
是的,这确实令人遗憾。就我个人而言,我用 Delphi 开发 Win32 桌面应用程序(具体来说是 VCL 框架,它只是原生 Windows 控件之上的一层薄封装),因此我专业编写的所有应用程序(用于科学、工业或企业场景)以及我在家中编写的所有应用程序(数学可视化等)都是 100% 原生 Windows 应用程序。当然,都带有滚动条右键菜单。
事实上,几年前 VCL 的一次更新让这个右键菜单消失了。作为 Embarcadero MVP,我将其作为 bug 上报,现在它又回来了!
对我而言,经典的 Win32 桌面及其原生 Win32 控件代表着质量与稳定性。一切都能正常工作,每一次都以完全符合预期的方式运行。我在 90 年代末编写的一个 Win32 应用程序至今仍可在 Windows 11 上使用。它的 Delphi 项目也可以毫无问题地在最新版 Delphi(13.2)中打开。而且我有信心,我今天编写的 Win32 应用程序在 20 年后仍能毫无问题地使用。
我听起来可能像个"Win32 狂热分子",但我真心认为经典 Windows 桌面在质量和稳定性方面是一项重大的技术成就。有时你会感觉"如今的年轻人"并不认为经典 Win32 桌面有多"火"或"酷",但整个世界都运行在它之上:从医疗信息系统到酒店预订系统,一切都基于经典 Win32 桌面。
我觉得遗憾的是,如今它常常不被视为"酷"、“火"或"现代”。
John Porter Simons: 我刚刚发现在 macOS 上可以 Option+点击滚动条凹槽直接跳转到对应位置,如果不是看到这篇文章,我永远不会知道。
Peter Kasting: 我知道 Shift+点击吸附到特定位置的功能在 Windows XP 中就已实现,因为我在 2006 年构建第一个 Chromium 滚动条实现时,正是基于当时已经具备该功能的 XP 滚动条行为。当时我还逆向工程出了精确的阈值:当指针被拖到离滚动条轨道太远时,会如何弹回滚动起始位置。