Как я могу использовать ToUnicode, не повреждая поддержку мертвой клавиши?

Подобный вопрос уже задали, таким образом, я не пропадаю зря время, повторно объясняя это, существующее обсуждение может быть найдено здесь: ToAscii/ToUnicode в захвате клавиатуры уничтожает мертвые клавиши

Причина я отправляю новый вопрос однако, состоит в том, что я, кажется, столкнулся с 'решением', но я не совсем уверен, как реализовать его.

Это сообщение в блоге, кажется, предлагает решение проблемы ToUnicode, уничтожающего поддержку мертвой клавиши: http://www.siao2.com/2005/01/19/355870.aspx

Однако я не уверен, как реализовать предложенное решение. Нажатие в правильном направлении значительно ценилось бы.

Чтобы быть ясной, часть, к которой я обращаюсь, является этим:

Существует два способа работать вокруг этого:

1) Можно продолжать называть ToUnicode с той же информацией, пока это не убрано, и затем назовите его еще раз для откладывания состояния, где это было, если Вы ничего никогда не вводили, или

2) Можно загрузить всю информацию о клавиатуре заранее и затем когда они вводят информацию, можно искать в собственном информационном кэше, что нажатия клавиш означают, не имея необходимость назвать API позже.

Я не совсем уверен, как сделать любую из тех вещей (клавиатуры, и интернационализация далеки от моей сильной стороны), таким образом, любая справка значительно ценилась бы.

Спасибо

5
задан Community 23 May 2017 в 12:13
поделиться

2 ответа

Первая часть ответа полностью лишена информации. Однако вторая часть имеет смысл. ToUnicode() должна быть чистой функцией, которая просто действует как поиск. Однако это не так. Но вы можете вызывать ее многократно для всех ожидаемых входов, хранить их в собственной таблице поиска и обращаться к ней.

Я бы рекомендовал Microsoft добавить флаг lookDontTouch к параметру wFlags; это было бы тривиальным не ломающим API исправлением.

5
ответ дан 14 December 2019 в 19:08
поделиться

Если вы расширите область поиска, включив в нее регистрацию ключей , вы можете получить некоторые ответы. Представленный в ссылке метод чрезвычайно громоздок по сравнению с ToUnicode , но он работает. Он развивается вокруг поиска текущей активной раскладки клавиатуры из реестра, а затем вручную загружает и анализирует правильную DLL.

В качестве предупреждения: я видел, как часть загрузки с треском провалилась в 64-битной Windows.

0
ответ дан 14 December 2019 в 19:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: