Странное поведение панели - помогите найти глюк

 

Уже несколько дней бьюсь над проблемой - не могу понять в чем дело. Суть в следующем:

Разместил кросплатформенную панель в Маркете. Та, версия что работает в MetaTrader 5 - работает правильно. А вот у пользователей MetaTrader 4 возникают проблемы: не могут нажать ни на одну из кнопок в панели (вернее нажимают и ничего не происходит). Засада в том, что этот глюк проявляется лишь у некоторых пользователей MetaTrader 4. У одних (и таких по всей видимости большинство) отработка событий работает верно. А у других - нет. Сам я воспроизвести эту проблему у себя на двух разных ПК не могу - у меня все работает четко. Следовательно не представляется возможным отладить программу и выявить проблему.

Собственно обращаюсь к корефеям. Может быть они знают в чем может быть дело? Может быть дело в настройках конкретных терминалов, о которых я не знаю? Возможно кто-то сталкивался с подобным? Такое ощущение что у пользователей с этим глюком событие OnChartEvent вообще не вызывается.

На всякий случай привожу код OnChartEvent

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   CEvent* event = NULL;
   switch(id)
   {
      case CHARTEVENT_OBJECT_CLICK:
         event = new CEventChartObjClick(sparam);
         break;
      case CHARTEVENT_MOUSE_MOVE:
         event = new CEventChartMouseMove(lparam, (long)dparam, (int)sparam);
         break;
      case CHARTEVENT_CUSTOM+EVENT_CHART_LIST_CHANGED:
         event = new CEventChartListChanged(sparam);
         break;
      case CHARTEVENT_CUSTOM+EVENT_CHART_PBAR_CHANGED:
         event = new CEventChartPBRefresh((int)lparam, dparam);
         break;
      case CHARTEVENT_CUSTOM+EVENT_CHART_CONSOLE_ADD:
         event = new CEventCharConsoleAdd((int)lparam, sparam);
         break;
      case CHARTEVENT_CUSTOM+EVENT_CHART_CONSOLE_CHLAST:
         event = new CEventCharConsoleChLast((int)lparam, sparam);
         break; 
   }
   
   if(event != NULL)
   {
      Dialog.Event(event);
      delete event;
   }
   ChartRedraw();
}

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

 
Подозреваю, что у некоторых товарищей необновленные терминалы. В которых не работает MQL4+
 
Vasiliy Sokolov:

Уже несколько дней бьюсь над проблемой - не могу понять в чем дело. Суть в следующем:

Разместил кросплатформенную панель в Маркете. Та, версия что работает в MetaTrader 5 - работает правильно. А вот у пользователей MetaTrader 4 возникают проблемы: не могут нажать ни на одну из кнопок в панели (вернее нажимают и ничего не происходит). Засада в том, что этот глюк проявляется лишь у некоторых пользователей MetaTrader 4. У одних (и таких по всей видимости большинство) отработка событий работает верно. А у других - нет. Сам я воспроизвести эту проблему у себя на двух разных ПК не могу - у меня все работает четко. Следовательно не представляется возможным отладить программу и выявить проблему.

Собственно обращаюсь к корефеям. Может быть они знают в чем может быть дело? Может быть дело в настройках конкретных терминалов, о которых я не знаю? Возможно кто-то сталкивался с подобным? Такое ощущение что у пользователей с этим глюком событие OnChartEvent вообще не вызывается.

На всякий случай привожу код OnChartEvent

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

В switch default нет
 
pako:
В switch default нет
а он там не нужен
 
Igor Volodin:
а он там не нужен

 при событии 

CHARTEVENT_CLICK

 

event чему будет равен? 

я бы дописал 

default :

event = NULL;

break; 

 
Нормально все в коде, не тут проблема. Почему бы не запилить диагностическую версию и не дать ее тем у кого не пашет? Ну или найти комп где воспроизводится и там чинить.
 
Vasiliy Sokolov:

Уже несколько дней бьюсь над проблемой - не могу понять в чем дело. Суть в следующем:

Разместил кросплатформенную панель в Маркете. Та, версия что работает в MetaTrader 5 - работает правильно. А вот у пользователей MetaTrader 4 возникают проблемы: не могут нажать ни на одну из кнопок в панели (вернее нажимают и ничего не происходит). Засада в том, что этот глюк проявляется лишь у некоторых пользователей MetaTrader 4. У одних (и таких по всей видимости большинство) отработка событий работает верно. А у других - нет. Сам я воспроизвести эту проблему у себя на двух разных ПК не могу - у меня все работает четко. Следовательно не представляется возможным отладить программу и выявить проблему.

Собственно обращаюсь к корефеям. Может быть они знают в чем может быть дело? Может быть дело в настройках конкретных терминалов, о которых я не знаю? Возможно кто-то сталкивался с подобным? Такое ощущение что у пользователей с этим глюком событие OnChartEvent вообще не вызывается.

На всякий случай привожу код OnChartEvent

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

Пусть проблемные пользователи укажут данные операционной системы и терминала. Нужны эти три строчки:

2016.02.20 13:20:46.483 Terminal        MetaTrader 5 x64 build 1241 started (MetaQuotes Software Corp.)
2016.02.20 13:20:46.484 Terminal        Windows 10 Pro (x64 based PC), IE 12.03, UAC, Intel Core i3-3120M  @ 2.50GHz, RAM: 1004 / 3981 Mb, HDD: 73628 / 233310 Mb, GMT+02:00
2016.02.20 13:20:46.484 Terminal        C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\0CFEFA8410765D70FC53545BFEFB44F4

На всякий случай, видео:

 

Причина обращения: