Diskussion zum Artikel "Grafische Interfaces IV: Der Multi-Window-Modus und das System für Prioritäten (Kapitel 2)"

 

Neuer Artikel Grafische Interfaces IV: Der Multi-Window-Modus und das System für Prioritäten (Kapitel 2) :

In diesem Kapitel werden wir die Bibliothek um die Möglichkeit der Erzeugung von Multi-Window-Modus-Interfaces für MQL Anwendungen erweitern. Wir werden zudem ein System für die Priorität eines Klicks mit der linken Maustaste auf grafische Objekte entwickeln. Dieses ist notwendig um Probleme zu vermeiden, falls der Anwender auf ein grafisches Element klickt und dieses nicht reagiert.

Der Multi-Window-Modus

Lassen Sie uns den Multi-Window-Modus des grafischen Interfaces unserer zu entwickelnden Bibliothek betrachten. Bis jetzt bietet die ENUM_WINDOW_TYPE Enumeration zwei Bezeichner: für das Haupt-(W_MAIN) und das Dialog (W_DIALOG) -Fenster (Window). Der Ein-Fenster-Modus war der einzige Modus, den wir gebraucht haben. Nachdem wir ein paar Ergänzungen hinzugefügt haben, muss für das Aktivieren des Multi-Window-Modus lediglich noch die Erzeugung und das Hinzufügen der benötigten Anzahl von Formularen zur Basis erfolgen.

Erzeugen sie in der Hauptklasse für die Event-Bearbeitung CWndEvents eine Variable für das Abspeichern des Index des aktuellen aktiven Fensters.

class CWndEvents : public CWndContainer
  {
protected:
   //--- Index des aktiven Fensters
   int               m_active_window_index;
  };

Lassen Sie uns nun ansehen, wie der Index des aktiven Fensters identifiziert werden kann. Wenn nun zum Beispiel der Anwender einem Button ein Dialogfenster (W_DIALOG) zuweist: Sind nun der Button gedrückt wird, dann wird das ON_CLICK_BUTTON Event erzeugt. Dieses Event kann in dem CProgram::OnEvent() Eventhandler der Benutzerklasse nachverfolgt werden. Wir verwenden zudem die CWindow::Show() Methode des Formulars welche noch gezeigt werden muss. Die aktuelle Implementation der Bibliothek ist noch nicht ausreichend und wir werden die notwendigen Erweiterungen vorstellen.

Fig. 2. Library structure at the current stage of development.

Autor: Anatoli Kazharski

Grund der Beschwerde: