Diskussion zum Artikel "Die Entwicklung von grafischen Oberflächen für Expert Advisors und Indikatoren auf Basis von .Net Framework und C#" - Seite 11

 

tolle Arbeit!

manchmal der MT5 abstürzt, wenn ich ein Formular zu schließen, natürlich gibt es eine unbehandelte Ausnahme, aber ich weiß nicht, wo ist der Code und kann es nicht fangen. haben Sie irgendwelche Ideen?

Haben Sie eine Idee?

 
Artur Zas:

Der Code im Beispiel ist WinForms spezifisch, aber Sie können ihn leicht für die Verwendung mit WPF ändern. Sie müssen nur an verschiedene Ereignisse auf der WPF-Shell-Seite binden. Der Code wird ein wenig anders sein, aber die Prinzipien bleiben die gleichen.

Sie können den Code auch unverändert verwenden, wenn Sie nur das WinForms-Fenster als Host für XAML-Steuerelemente verwenden. Sie können dies mit den neuen XAML-Inseln tun . Auf diese Weise können Sie alle modernen UWP-Steuerelemente innerhalb einer WinForm verwenden.

Wie können wir die erste tun, weil ich versuche, die Fensterklasse statt Form auf dem Visual Studio-Programm einschließen, aber das dont 'Works. Oder kennen Sie andere .dll in der Lage, mit MQL5 und WPF arbeiten?
 

Guten Tag, aus irgendeinem Grund lässt es sich nicht kompilieren, was mache ich falsch? Ich habe die Datei MtGuiController.dll in den Ordner Libraries gelegt.


 
Copyright © 2020 ®kwancheetuck Alle Rechte vorbehalten über. Einlagenbesitz MQL5
.
 
Vasiliy Sokolov:

Ich würde gerne Raumschiffe in den Weltraum schießen. Ich habe viele Ideen, aber ich kann sie auch nicht in die Tat umsetzen.

Und im Allgemeinen ist es sympathisch: Es ist schwer, das Studio herunterzuladen, aber den XAML-Interpreter selbst zu schreiben - das ist nichts, aber ich bekomme ihn einfach nicht in die Finger.

))

 
Rafil Nurmukhametov:

Guten Tag, aus irgendeinem Grund lässt es sich nicht kompilieren, was mache ich falsch? Ich habe die Datei MtGuiController.dll in den Ordner Libraries gelegt.


Rafil, haben Sie herausgefunden, was das Problem ist?

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

//+------------------------------------------------------------------+
//| Experteninitialisierungsfunktion|
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Zeitschaltuhr erstellen
   GuiController::ShowForm(assembly, "Form1");
   EventSetMillisecondTimer(200);   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Zeitgeber zerstören
   printf("enter deinit");
   GuiController::HideForm(assembly, "Form1");
   printf("exit deinit");
   EventKillTimer();
   
  }
//+------------------------------------------------------------------+
//| Experten-Tick-Funktion|
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer-Funktion|
//+------------------------------------------------------------------+
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, können Sie mir helfen, dies zu verstehen?

Nehmen Sie GuiMtController.mq5, legen Sie die Bibliothek in Libraries, .exe in c:\\MT\\\\, definieren Sie Assembly entsprechend.

Beim Kompilieren erhalten wir eine Meldung über eine undefinierte ClickOnElement-Variable. Sagen wir, wir ersetzen sie durch eine beliebige Ganzzahl -> normal kompilieren, aber das Formular selbst startet nicht. Natürlich sind Dlls erlaubt, Metaeditor Build 2361

 

Vielleicht stolpert ja noch jemand darüber

hier ist die Stelle im Artikel

"Wie Sie sehen können, versteht der Compiler externe Enums, die in Net-Libraries definiert sind, und weiß, wie man mit ihnen arbeitet."

Ich weiß noch nicht, aus welchem Grund, aber der Compiler weigert sich hartnäckig, C# enums zu verstehen, also ziehen wir enum aus C# in Mql5 und alles funktioniert.

Nur, Vasily, du hast die Schaltflächen für Kaufen und Verkaufen im Trading-Panel auf die entgegengesetzte Weise platziert )).

Aber im Allgemeinen hat sich die coolste Sache herausgestellt. Vielen Dank für deine harte Arbeit!)

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

vielleicht stolpert jemand anderes

dies ist die Stelle im Artikel

"Wie Sie sehen können, versteht der Compiler externe Aufzählungen, die in Netzbibliotheken definiert sind, und weiß, wie man mit ihnen arbeitet."

Ich weiß nicht, aus welchem Grund, aber der Compiler weigert sich hartnäckig, C# Enums zu verstehen, also ziehen wir enum von C# in Mql5 und alles funktioniert.

Nur, Vasily, Sie haben die Schaltflächen Kaufen und Verkaufen im Handelsbereich verkehrt herum platziert ))

Aber im Großen und Ganzen hat sich die coolste Sache herausgestellt. Vielen Dank für deine harte Arbeit!)

Warte, bis du aufgeregt bist. Prüfen Sie, ob die Tabellen funktionieren. Dieses Problem blieb unklar. Bei der Ausgabe von Daten mit hoher Frequenz kam es zu großen Verzögerungen.
 
Реter Konow:
Warten Sie, bis Sie aufgeregt sind. Prüfen Sie, ob die Tabellen funktionieren. Dieses Problem blieb unklar. Es gab große Verzögerungen bei der Ausgabe von Daten mit hoher Frequenz.

Guten Tag! )

Peter, was meinen Sie mit "waren" und was meinen Sie mit "hoch"? Es gab irgendwo eine Diskussion zu diesem Thema oder so