【发布时间】:2010-03-25 09:47:20
【问题描述】:
一些 MS 应用程序支持和弦的概念,如 CTRL + X ,Y 表示“按住 CTRL kbd>,按 X,然后按 Y"。
这是他们(和其他公司)实施的定制功能,还是内置在任何 API 中?能够基于和弦设置事件处理程序或加速器而不是编写代码来做到这一点会很好。
【问题讨论】:
标签: winapi user-interface keyboard-shortcuts windows
一些 MS 应用程序支持和弦的概念,如 CTRL + X ,Y 表示“按住 CTRL kbd>,按 X,然后按 Y"。
这是他们(和其他公司)实施的定制功能,还是内置在任何 API 中?能够基于和弦设置事件处理程序或加速器而不是编写代码来做到这一点会很好。
【问题讨论】:
标签: winapi user-interface keyboard-shortcuts windows
“加速器”支持普通按键加上 Shift、Ctrl、Alt 的任意组合。
对于您的要求,我认为您需要自己处理 WM_KEYDOWN 和 WM_KEYUP。
【讨论】:
有几种使用 GetKeyAsyncState 的解决方案,您可以从中直接派生哪些键当前处于向上和向下状态。跟踪每个 WM_KEYUP/DOWN 并不容易,而且大多数简单的解决方案都存在多个应用程序和多个线程的问题。
一种可能的解决方案是使用加速器(即 ctrl-Y)检测组合的“简单”部分,然后检查处理程序中的其他键(即 X)是否已关闭。
【讨论】: