Новая версия платформы MetaTrader 5 build 3300: Быстрая компиляция и улучшенная навигация по коду в MetaEditor - страница 7

 

Странное поведение:

После компиляции нажимаю клавишу что бы вызвать MessageBox пример кода ниже

Появляется окно MessageBox, но оно не активно, то есть управлять перемещением курсора выделения кнопок, с помощью клавы, по кнопкам Yes, No, Cancel нельзя. По окну MessageBox нужно обязательно кликнуть мышью.

При этом если мы пытаемся перемещать курсор выделения кнопок нажатием клавиш, ничего не происходит, но нажатия клавиш сохраняются, и после того как мы мышью закрываем окно, начинают отрабатывать все нажатия, которые были сделаны в попытке переместить курсор по кнопкам Yes, No, Cancel.

При повторной попытке открыть окно, без компиляции кода, все работает штатно. 

Баг проявляется только после компиляции, разово, при первом вызове  MessageBox, затем все работает штатно...

Код для воспроизведения

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
color m_color_menu = clrNONE;
void OnTick()
  {
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id == CHARTEVENT_OBJECT_CLICK || id == CHARTEVENT_KEYDOWN)
      ::MessageBox("Тест", "Тест", MB_YESNOCANCEL);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
Если надо могу видео записать. 
 
Vladimir Pastushak #:

Появляется окно MessageBox, но оно не активно

Несколько раз предлагалось разработчикам сделать обратный счет для этого окна.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопрос о MessageBox()

Alexey Navoykov, 2012.02.07 15:21

Сейчас попробовал, в MQL4 эта недокументированная функция вызывается без проблем. Вот рабочий пример:

#include <WinUser32.mqh>

#import "user32.dll"
  int MessageBoxTimeoutA(int hWnd, string lpText, string lpCaption, int uType, int wLanguageId, int dwMilliseconds); 

int start()
{ 
  int result=MessageBoxTimeoutA(0,"Are you ok?","Caption",MB_YESNO,0,1000);
  Print(result);
}
 
fxsaber #:

Несколько раз предлагалось разработчикам сделать обратный счет для этого окна.

В маркете такое не прокатит. 

Для конечного пользователя проблем нет там все работает штатно.

Дискомфорт для разработчика, так как баг проявляется при первом вызове после компиляции..

 

Последняя релизная MT5 3320, компилятор выкидывает

generating code 94%             1       1
Internal compiler error Test.mq5        1       1

В итоге скомпилировать невозможно. Файлы готов скинуть в личку, это кусок боевого проекта, по возможности обрезал.

 
traveller00 #:

Последняя релизная MT5 3320, компилятор выкидывает

В итоге скомпилировать невозможно. Файлы готов скинуть в личку, это кусок боевого проекта, по возможности обрезал.

Обновитесь до последней беты, пожалуйста.

Эта ошибка исправлена.

 

Здравствуйте.

Столкнулся с такой проблемой.

В новых версиях МТ в области наблюдений при откладке автоматически отображаются локальные переменные.

Но по какой-то причине отображаются не все локальные переменные, которые имеются в коде в точке останова.

Если я добавляю переменную вручную в список наблюдений, то она не определяется.

К примеру: Рисунок 1.

Если откатиться до версии:  Рисунок 2. 

То данная проблема исчезает:  Рисунок 3.

Прошу помочь с данной проблемой в новых версиях MT.

Как обойти или решить проблему?


Файлы:
8tyikmu_1.png  23 kb
rlrmsfb_2.png  38 kb
1raz35r_3.png  14 kb
 
MetaQuotes #:

Обновитесь до последней беты, пожалуйста.

Эта ошибка исправлена.

В вышедшей последней релизной версии тоже теперь исправлено. Спасибо!
 
traveller00 #:
В вышедшей последней релизной версии тоже теперь исправлено. Спасибо!

К сожалению проблема не исчезла.

Платформа обновлена до последней - Рисунок 1.

Также прикрепил подтверждение проблемы - Рисунок 2. 

Файлы:
2irmsql_1.png  20 kb
j6jm8qw_2.png  52 kb
 
Григорий Орленко #:

К сожалению проблема не исчезла.

Платформа обновлена до последней - Рисунок 1.

Также прикрепил подтверждение проблемы - Рисунок 2. 

Покажите полноценный код для воспроизведения, пожалуйста.

По скриншотам такое не лечится.

 
Григорий Орленко #:

К сожалению проблема не исчезла.

Платформа обновлена до последней - Рисунок 1.

Также прикрепил подтверждение проблемы - Рисунок 2. 

Скажите, а у вас массив структур объявлен в основном коде, а выполнение в данный момент в библиотеке? Да ещё и переход в эту библиотеку случился через 3 других библиотеки?

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