Im Anhang finden Sie eine Tafel, die auf dem Beispiel von SB basiert. Ich habe den Code bereinigt, so dass nur noch das übrig ist, was für die Frage relevant ist; der Quellcode ist beigefügt.
Können Sie mir sagen, wie ich die Kopfzeile und den Hauptbereich, an den wir die Elemente hängen, einfärben kann? Es scheint, dass sich diese Objekte in der übergeordneten Klasse Dialog befinden,
private:
//--- dependent controls
CPanel m_white_border; // the "white border" object
CPanel m_background; // the background object
CEdit m_caption; // the window title object
CBmpButton m_button_close; // the "Close" button object
CWndClient m_client_area; // the client area object
Und sie haben entsprechende Methoden
Aber wie komme ich richtig an die privaten Felder?
Im Anhang finden Sie eine Tafel, die auf dem Beispiel von SB basiert. Ich habe den Code bereinigt, so dass nur noch das übrig ist, was für die Frage relevant ist; der Quellcode ist beigefügt.
Können Sie mir sagen, wie ich die Kopfzeile und den Hauptbereich, an den wir die Elemente hängen, einfärben kann? Es scheint, dass sich diese Objekte in der übergeordneten Klasse Dialog befinden,
Und sie haben entsprechende Methoden
Aber wie komme ich richtig an die privaten Felder?
Sie haben eine Liste von Methoden für den Zugriff auf diese Felder auf dem Bild. Sind die Methoden öffentlich?
Artyom Trishkin: Sie haben eine Liste von Zugriffsmethoden auf diese Felder auf dem Bild. Sind die Methoden öffentlich?
Es gibt eine öffentliche Methode CDialog::CreateCaption(), CreateClientArea(). Dort werden Panels erstellt, deren Farben über CONTROLS_DIALOG_COLOR_BG und CONTROLS_DIALOG_COLOR_CLIENT_BG festgelegt werden.
Ich habe versucht, diese Variablen in meiner Klasse durch undef zu überschreiben und sie neu zu definieren. Dann führen Sie die Methoden Create... erneut aus, aber da die Objekte bereits erstellt wurden, wird ein Fehler 4200 zurückgegeben - das Objekt existiert bereits.
Es gibt eine öffentliche Methode CDialog::CreateCaption(), CreateClientArea(). Dort werden Panels erstellt, deren Farben über CONTROLS_DIALOG_COLOR_BG und CONTROLS_DIALOG_COLOR_CLIENT_BG festgelegt werden.
Ich habe versucht, diese Variablen in meiner Klasse durch undef zu überschreiben und sie neu zu definieren. Dann führen Sie die Methoden Create... erneut aus, aber da die Objekte bereits erstellt wurden, wird ein Fehler 4200 zurückgegeben - das Objekt existiert bereits.
Hinzugefügt:
Die 4200 Fehler ist, wenn ich in MT4 überprüft.
Ehrlich gesagt habe ich diese SB-Ressourcen noch nie genutzt. Aber was hindert Sie daran, in SB nachzuschauen, wo und mit welchen Methoden dort die Farben festgelegt werden. Was Sie in der Auflistung gezeigt haben:
private:
//--- dependent controls
CPanel m_white_border; // the "white border" object
CPanel m_background; // the background object
CEdit m_caption; // the window title object
CBmpButton m_button_close; // the "Close" button object
CWndClient m_client_area; // the client area object
- sind Objektnamen - CPanel, CEdit, CBmpButton und CWndClient Klassen.
Und Sie müssen die Namen der Mitglieder dieser Klassen finden, in denen die Farben gespeichert sind und mit welchen Methoden sie initialisiert oder geändert werden können.
Und wahrscheinlich müssen Sie sie erst initialisieren und dann das Objekt selbst erstellen.
Danke, ich glaube, ich habe es verstanden.
Und wie lässt man den Debugger auf historischen Daten laufen?
Ich helfe gerne.
Debugging ist nur in der Historie des MT5 möglich.
Ich helfe gerne.
Debugging ist nur in der Historie des MT5 möglich.
Ich verstehe, dass MT5 eine andere Programmiersprache hat. Wird mein Code dort nicht funktionieren?
Ich verstehe, dass MT5 eine andere Programmiersprache hat. Wird mein Code dort nicht funktionieren?
Im Anhang finden Sie eine Tafel, die auf dem Beispiel von SB basiert. Ich habe den Code bereinigt, so dass nur noch das übrig ist, was für die Frage relevant ist; der Quellcode ist beigefügt.
Können Sie mir sagen, wie ich die Kopfzeile und den Hauptbereich, an den wir die Elemente hängen, einfärben kann?
Es scheint, dass sich diese Objekte in der übergeordneten Klasse Dialog befinden,
Und sie haben entsprechende Methoden
Aber wie komme ich richtig an die privaten Felder?
Im Anhang finden Sie eine Tafel, die auf dem Beispiel von SB basiert. Ich habe den Code bereinigt, so dass nur noch das übrig ist, was für die Frage relevant ist; der Quellcode ist beigefügt.
Können Sie mir sagen, wie ich die Kopfzeile und den Hauptbereich, an den wir die Elemente hängen, einfärben kann?
Es scheint, dass sich diese Objekte in der übergeordneten Klasse Dialog befinden,
Und sie haben entsprechende Methoden
Aber wie komme ich richtig an die privaten Felder?
Sie haben eine Liste von Methoden für den Zugriff auf diese Felder auf dem Bild. Sind die Methoden öffentlich?
Nein. Ich habe es in CDialog im Konstruktor eingegeben, es erfasst und dann alles wieder zurückgesetzt.
Sie haben eine Liste von Zugriffsmethoden auf diese Felder auf dem Bild. Sind die Methoden öffentlich?
Es gibt eine öffentliche Methode CDialog::CreateCaption(), CreateClientArea(). Dort werden Panels erstellt, deren Farben über CONTROLS_DIALOG_COLOR_BG und CONTROLS_DIALOG_COLOR_CLIENT_BG festgelegt werden.
Ich habe versucht, diese Variablen in meiner Klasse durch undef zu überschreiben und sie neu zu definieren. Dann führen Sie die Methoden Create... erneut aus, aber da die Objekte bereits erstellt wurden, wird ein Fehler 4200 zurückgegeben - das Objekt existiert bereits.
Hinzugefügt:
Fehler 4200 ist, wenn ich in MT4 überprüft.
Es gibt eine öffentliche Methode CDialog::CreateCaption(), CreateClientArea(). Dort werden Panels erstellt, deren Farben über CONTROLS_DIALOG_COLOR_BG und CONTROLS_DIALOG_COLOR_CLIENT_BG festgelegt werden.
Ich habe versucht, diese Variablen in meiner Klasse durch undef zu überschreiben und sie neu zu definieren. Dann führen Sie die Methoden Create... erneut aus, aber da die Objekte bereits erstellt wurden, wird ein Fehler 4200 zurückgegeben - das Objekt existiert bereits.
Hinzugefügt:
Die 4200 Fehler ist, wenn ich in MT4 überprüft.
Ehrlich gesagt habe ich diese SB-Ressourcen noch nie genutzt. Aber was hindert Sie daran, in SB nachzuschauen, wo und mit welchen Methoden dort die Farben festgelegt werden. Was Sie in der Auflistung gezeigt haben:
- sind Objektnamen - CPanel, CEdit, CBmpButton und CWndClient Klassen.
Und Sie müssen die Namen der Mitglieder dieser Klassen finden, in denen die Farben gespeichert sind und mit welchen Methoden sie initialisiert oder geändert werden können.
Und wahrscheinlich müssen Sie sie erst initialisieren und dann das Objekt selbst erstellen.
Hallo!
Beim Kompilieren wird"undeklarierter Bezeichner" ausgegeben (undeklarierter Bezeichner)
Ich suchte und suchte, verstand aber nicht, was ich tun sollte, um den Fehler zu beheben
Hilfe, bitte!