Как отследить режим курсора "перекрестие"?

 

Подскажите пожалуйста.

Когда нажимаю колесико мыши на графике, курсор переходит в режим "перекрестие".

Есть ли какой-то способ програмно узнать, находится ли курсор прямо сейчас в режиме перекрестия или нет?

Хочу, чтобы индикатор мне выдавал одну информацию, когда курсор в обычном режиме и другую, когда в режиме перекрестие.

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

Всем спасибо. Буду благодарен за подсказку )

 
yar.forex:

Подскажите пожалуйста.

Когда нажимаю колесико мыши на графике, курсор переходит в режим "перекрестие".

Есть ли какой-то способ програмно узнать, находится ли курсор прямо сейчас в режиме перекрестия или нет?

Хочу, чтобы индикатор мне выдавал одну информацию, когда курсор в обычном режиме и другую, когда в режиме перекрестие.

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

Всем спасибо. Буду благодарен за подсказку )

вот наверное что то связанное с вашим вопросом https://www.mql5.com/ru/docs/event_handlers/onchartevent

Снимок экрана 2021-11-19 060243

Документация по MQL5: Обработка событий / OnChartEvent
Документация по MQL5: Обработка событий / OnChartEvent
  • www.mql5.com
OnChartEvent - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Файлы:
 
SanAlex #:

вот наверное что то связанное с вашим вопросом https://www.mql5.com/ru/docs/event_handlers/onchartevent


Спасибо за ответ. Правда, по-моему это не совсем то. Вроде в OnChartEvent() нету параметра, который говорил бы, в каком состоянии находится курсор. Обычном или в состоянии "перекрестие".

 
yar.forex #:

Спасибо за ответ. Правда, по-моему это не совсем то. Вроде в OnChartEvent() нету параметра, который говорил бы, в каком состоянии находится курсор. Обычном или в состоянии "перекрестие".

Параметра нет. Все придется делать самому, отслеживая клик на колесике мыши. Правда, остается вариант, когда перекрестие активировано с тулбара. В этом случае без WinAPI, по-моему, не обойтись. Там можно будет получить текущий режим курсора.

 
SanAlex #:

вот наверное что то связанное с вашим вопросом https://www.mql5.com/ru/docs/event_handlers/onchartevent


Хотя, с другой стороны, ваш ответ натолкнул на мысль.

Можно попробовать отслеживать нажатие средней кнопки мыши и нажатие другой кнопки мыши. Т.е. если последнее, что нажал пользователь мышью на графике была средняя кнопка мыши, значит сейчас режим перекрестие. А если любую другую кнопку или еще ничего не нажимал, то значит сейчас не режим "перекрестие".

В целом, я думаю, мне этого решения достаточно. Так что всем спасибо.

Но если вдруг все таки существует встроенный в MQL метод для получения напрямую информации о том, сейчас курсор в режиме перекрестие или нет, то был бы благодарен за подсказку. В будущем все равно пригодится.
 
Ihor Herasko #:

Параметра нет. Все придется делать самому, отслеживая клик на колесике мыши. Правда, остается вариант, когда перекрестие активировано с тулбара. В этом случае без WinAPI, по-моему, не обойтись. Там можно будет получить текущий режим курсора.

Да, спасибо )

Только что пришла эта же идея, что можно через нажатие колесика мыши )

 
yar.forex #:

Да, спасибо )

Только что пришла эта же идея, что можно через нажатие колесика мыши )

Но ведь пользователь может нажать здесь

 
Nikolai Semko #:

Но ведь пользователь может нажать здесь

Спасибо за ответ

Мне потребовалось пол дня, чтобы меня осенило, что вы имели ввиду )

Да, вы правы, это косяк в моей логике. Но я пишу индикатор для себя, а я ни разу в жизни сюда не нажимал. Но если вдруг решу свое творение выставить на маркете, данный аспект и правда нужно будет проработать отдельно

 
yar.forex #:

Спасибо за ответ

Мне потребовалось пол дня, чтобы меня осенило, что вы имели ввиду )

Да, вы правы, это косяк в моей логике. Но я пишу индикатор для себя, а я ни разу в жизни сюда не нажимал. Но если вдруг решу свое творение выставить на маркете, данный аспект и правда нужно будет проработать отдельно

Вот решение если не пользоваться панелью инструментов

/***********************OnChartEvent function************************/
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                 )
 {
  if(id == CHARTEVENT_MOUSE_MOVE)
   {
    if(sparam == "16")
     Print(__LINE__, sparam);
   }
 }/******************************************************************/

Левая кнопка крыски sparam == "1", правая == "2"

 
Alexey Viktorov #:

Вот решение если не пользоваться панелью инструментов

Левая кнопка крыски sparam == "1", правая == "2"

Охх, спасибо большое. Вы мне сэкономили много времени. Все оказалось гораздо проще в реализации )