Обсуждение статьи "Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#" - страница 11

 

отличная работа!

Иногда MT5 падает, когда я закрываю форму, конечно, есть необработанное исключение, но я не знаю, где находится код и не могу его поймать. у вас есть идеи?

У вас есть какие-нибудь идеи?

 
Artur Zas:

Код в примере специфичен для WinForms, но вы можете легко изменить его для использования в WPF. Вам просто нужно привязаться к другим событиям на стороне оболочки WPF. Код будет немного отличаться, но принципы останутся теми же.

Вы также можете использовать код как есть, если вы просто используете окно WinForms в качестве хоста для элементов управления XAML. Это можно сделать с помощью новых XAML Islands. Таким образом, вы сможете использовать все современные элементы управления UWP внутри WinForm.

Как мы можем сделать первое, потому что я пытаюсь включить класс окна вместо формы в программе Visual Studio, но это не работает. Или вы знаете другие .dll, способные работать с MQL5 и WPF?
 

Добрый день! Почему-то не компилируется, что не правильно делаю? файл  MtGuiController.dll положил в папку Libraries


 
Copyright © 2020 ®kwancheetuck Все права защищены. Владение депозитом MQL5
.
 
Vasiliy Sokolov:

А я б, запускал космические корабли в космос. Идей куча, вот только руки тоже не доходят.

А вообще это конгениально: студию сложно скачать, зато самому запилить XAML интерпритатор - ерунда, вот только руки не доходят.

))

 
Rafil Nurmukhametov:

Добрый день! Почему-то не компилируется, что не правильно делаю? файл  MtGuiController.dll положил в папку Libraries


Rafil, разобрались в чем была проблема?

 
#import  "MtGuiController.dll"
string assembly = "C:\\MT5\\Form1.exe";

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   GuiController::ShowForm(assembly, "Form1");
   EventSetMillisecondTimer(200);   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   printf("enter deinit");
   GuiController::HideForm(assembly, "Form1");
   printf("exit deinit");
   EventKillTimer();
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   for(static int i = 0; i < GuiController::EventsTotal(); i++)
   {
      int id;
      string el_name;
      long lparam;
      double dparam;
      string sparam;
      GuiController::GetEvent(i, el_name, id, lparam, dparam, sparam);
//      if(id == ClickOnElement)
      if(id == 9)
         printf("Click on element " + el_name);
   }
  }
//+------------------------------------------------------------------+

@Vasiliy Sokolov , вы не могли бы помочь разобраться?

Берем GuiMtController.mq5, кладем библиотеку в Libraries, .exe в c:\\MT\\ , соответственно определяем assembly 

Компилируем и получаем сообщение о неопределенной переменной ClickOnElement. Допустим, заменим на любое целое -> компилируем нормально, но сама форма не запускается. Конечно, dll разрешены, сборка Metaeditor 2361

 

может кто еще споткнется

вот это место в статье

"Как видите, компилятор понимает внешние перечисления определенные в Net-библиотеках и умеет с ними работать." 

Не знаю пока по какой причине, но компилятор упорно отказывается понимать C# перечисления, поэтому тащим enum из C# в Mql5 и все работает. 

Только, Василий, вы в торговой панельке кнопки Buy и Sell расположили наоборот ))

А вообще, крутейшая штука получилась. Спасибо вам за труд! )

Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
После объявления перечисления появляется новый целочисленный 4-байтовый тип данных. Объявление нового типа данных позволяет компилятору строго контролировать типы передаваемых параметров, так как  перечисление вводит новые именованные константы. В приведенном примере именованная константа January имеет значение 0, February имеет значение 1...
 
Nikolai Karetnikov:

может кто еще споткнется

вот это место в статье

"Как видите, компилятор понимает внешние перечисления определенные в Net-библиотеках и умеет с ними работать." 

Не знаю пока по какой причине, но компилятор упорно отказывается понимать C# перечисления, поэтому тащим enum из C# в Mql5 и все работает. 

Только, Василий, вы в торговой панельке кнопки Buy и Sell расположили наоборот ))

А вообще, крутейшая штука получилась. Спасибо вам за труд! )

Подождите радоваться. Проверьте, работают ли таблицы. Этот вопрос остался не ясным. Были огромные задержки при выводе данных на высокой частоте. 
 
Реter Konow:
Подождите радоваться. Проверьте, работают ли таблицы. Этот вопрос остался не ясным. Были огромные задержки при выводе данных на высокой частоте. 

День добрый! )

Петр, что значит "были" и что значит "высокой"? Где-то дискуссия на эту тему была, что-ли