Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Недавно я обнаружил 2 ошибки в функциях, использующих функции winuser.h (что может быть простым совпадением), о которых я сообщил на английских форумах и надеюсь, что они будут исправлены.
Во-первых, TerminalInfoInteger иногда вызывает аномальное завершение при проверке состояния клавиш (если он удален в середине вызова функции):
Во-вторых, TranslateKey не поддерживает мертвые клавиши. Я провел дополнительные тесты в своем сообщении на английском форуме, но я использовал испанскую клавиатуру.
Для русской мнемонической клавиатуры вы могли бы проверить такие комбинации, я думаю:
Ожидаемым результатом нажатия мертвой клавиши + клавиши будет комбинированный символ (как это происходит при написании в редакторе или в веб-браузерах). Фактический результат эквивалентен нажатию каждой клавиши 2 раза и получению последнего символа.
Насколько я знаю, причина второй ошибки в том, что каждое нажатие клавиши отправляется в ToUnicodeEx (самим metatrader, возможно, используется для записи правок), поэтому при использовании TranslateKey оно считается вторым нажатием клавиши, поэтому отказ от вызова любой из функций, когда это не нужно, должен решить проблему (если это невозможно по каким-либо техническим причинам, следует использовать другой подход). Что касается первой ошибки, то я совершенно не представляю, что может вызывать аномальные завершения.
У меня есть еще одно предложение: я заметил, что значения перечисления keystate в ENUM_TERMINAL_INTEGER в основном равны 1000+keycode, но только некоторые терминальные ключи определены (и возвращают допустимые значения). Нельзя ли сделать доступным состояние остальных ключей (даже без добавления новых значений перечисления)? Или есть какие-то причины, по которым это не может быть реализовано?