Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором - страница 150

 

Почему при реализации:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {
   if(CHARTEVENT_CHART_CHANGE) Alert("Event start, size window = "+ChartWidthInPixels());
}

терминал реагирует не только на изменение размера чарта, но и на любое перемещение мыши?

 
Barbarian:

Почему при реализации:

терминал реагирует не только на изменение размера чарта, но и на любое перемещение мыши?


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

Замечено что если терминал находится на втором плане а на первом любой другой софт то при наведении мыши на график терминала в фоне, терминал все равно получает информацию от мыши ....

 
VOLDEMAR:


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

Замечено что если терминал находится на втором плане а на первом любой другой софт то при наведении мыши на график терминала в фоне, терминал все равно получает информацию от мыши ....

Да, но в справке указано:

Перемещение мыши и нажатие кнопок мыши (если для графика установлено свойство CHART_EVENT_MOUSE_MOVE=true)

У меня же это свойство установлено в false. Как отключить реакцию мыши? Мне нужно только изменение размера чарта.
 
Barbarian:

Почему при реализации:

терминал реагирует не только на изменение размера чарта, но и на любое перемещение мыши?


Должно быть так:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {
   if(id==CHARTEVENT_CHART_CHANGE) Alert("Event start, size window = "+ChartWidthInPixels());
}
 
Wahoo:


Должно быть так:

Спасибо, заработало как нужно :)
 
Дайте кто нибудь ответ на пост https://www.mql5.com/ru/forum/147679/page152#888374
 
VOLDEMAR:
Дайте кто нибудь ответ на пост https://www.mql5.com/ru/forum/147679/page152#888374

Я использую CCanvas - меньше писанины и работать проще (копипастить, создавать массивы и т.п.).

Как работать с базовым графическим API можно понять анализируя пример от производителя - тот же класс CCanvas в стандартной библиотеке.

Пример использования CCanvas (и не только) положил в прицеп. // Пример почти без изменений перенесён с пятёрки

Файлы:
 
MetaDriver:

Я использую CCanvas - меньше писанины и работать проще (копипастить, создавать массивы и т.п.).

Как работать с базовым графическим API можно понять анализируя пример от производителя - тот же класс CCanvas в стандартной библиотеке.

Пример использования CCanvas (и не только) положил в прицеп. // Пример почти без изменений перенесён с пятёрки

По моему так не совсем правильно делать:

CCanvas * Label;

int OnInit() {
   Label = new CCanvas();
   //некий код
}
void DeInit() {
   delete Label;
}
Может так будет правильнее:
CCanvas * Label = new CCanvas();

int OnInit() {
   //некий код
}
void DeInit() {
   delete Label;
}
 
Barbarian:

По моему так не совсем правильно делать:

Может так будет правильнее:
Оба варианта правильные.
 
VOLDEMAR:
Дайте кто нибудь ответ на пост https://www.mql5.com/ru/forum/147679/page152#888374

Текст надо создавать отдельно. Поверх метки. Или можно использовать объект Кнопка, там текст сразу можно задать.