Является ли ключевая функция аккордов в Win32 / .net? - PullRequest
2 голосов
/ 25 марта 2010

Несколько приложений MS поддерживают концепцию аккордов, например CTRL + X , Y , что означает «удерживая нажатой CTRL , нажмите X , затем Y".

Это специальная вещь, которую они (и другие компании) реализуют, или она встроена в какие-либо API? Было бы неплохо иметь возможность устанавливать обработчики событий или ускорители на основе аккордов, а не писать код для этого.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2011

Существует несколько решений, использующих GetKeyAsyncState, из которых вы можете напрямую определить, какие ключи в данный момент работают вверх и вниз. Отслеживать каждый WM_KEYUP / DOWN непросто, и у большинства наивных решений есть проблемы с несколькими приложениями и несколькими потоками.

Возможное решение состоит в том, чтобы обнаружить «легкую» часть комбинации с помощью ускорителя (то есть ctrl-Y) и затем проверить, не находятся ли другие ключи (то есть X) в обработчике.

0 голосов
/ 25 марта 2010

«Ускорители» поддерживают обычные нажатия клавиш плюс любую комбинацию Shift , Ctrl , Alt .

Для того, что вы просите, я думаю, вам нужно обработать WM_KEYDOWN и WM_KEYUP самостоятельно.

...