Ай-нэ-нэ код какой-то. Зачем два "!" ? :)
В мт5 версии в обработчике нажатий клавиш спользуется код
bool SHIFT = !!TerminalInfoInteger(TERMINAL_KEYSTATE_SHIFT);
чтобы получить разные события на X и на Shift-X. Всё работает корректно.
При переносе решения в мт4 иногда работает корректно, но иногда код который отрабатывается при нажатии SHIFT-X начинает отрабатываться и без прижатия Shift, но только когда нажата Х. Т.е. такое ощущение, что мт4 продолжает считать, что Shift нажат. Кто с подобным сталкивался и как решал? Я пока перенес вызов кода на другую клавишу без шифта, но это несколько меняет логику работы пользователя.
Странная конструкция...
Попробуйте так:
//+------------------------------------------------------------------+ //| Возвращает состояние клавиши Ctrl | //+------------------------------------------------------------------+ bool IsCtrlKeyPressed(void) { return(::TerminalInfoInteger(TERMINAL_KEYSTATE_CONTROL)<0); } //+------------------------------------------------------------------+ //| Возвращает состояние клавиши Shift | //+------------------------------------------------------------------+ bool IsShiftKeyPressed(void) { return(::TerminalInfoInteger(TERMINAL_KEYSTATE_SHIFT)<0); } //+------------------------------------------------------------------+
Оказывается надо было следовать RTFM:
Вызов TerminalInfoInteger(TERMINAL_KEYSTATE_XXX) возвращает такой же код состояния клавиши, как и функция GetKeyState() из MSDN.
- 2022.08.04
- jwmsft
- learn.microsoft.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В мт5 версии в обработчике нажатий клавиш спользуется код
bool SHIFT = !!TerminalInfoInteger(TERMINAL_KEYSTATE_SHIFT);
чтобы получить разные события на X и на Shift-X. Всё работает корректно.
При переносе решения в мт4 иногда работает корректно, но иногда код который отрабатывается при нажатии SHIFT-X начинает отрабатываться и без прижатия Shift, но только когда нажата Х. Т.е. такое ощущение, что мт4 продолжает считать, что Shift нажат. Кто с подобным сталкивался и как решал? Я пока перенес вызов кода на другую клавишу без шифта, но это несколько меняет логику работы пользователя.