Diskussion zum Artikel "Wie erstellt man ein grafisches Panel beliebiger Komplexität?" - Seite 15

 
Stanislav Korotky #:
Siehe /MQL5/Include/Controls/Defines.mqh Datei - alle Konstanten dort sind als Pixel(!) definiert, so dass alles "schwimmt", wenn man DPI ändert. Wenn Sie das Problem schnell beheben wollen, müssen Sie all diese Konstanten in Ihrem Code neu definieren.

Ich danke Ihnen. Ich habe in meinem Code so gemacht, dass es bequem wurde, das Fenster zu ziehen und das Kreuz zu drücken, um das Fenster zu schließen.

Aber um die Icons der Buttons zu skalieren (minimieren/schließen) muss man anscheinend woanders suchen: BmpButton.mqh, ChartObjectsBmpControls.mqh, etc.

#include <Controls\Defines.mqh>
// alte Werte entfernen
#undef   CONTROLS_DIALOG_CAPTION_HEIGHT
#undef   CONTROLS_DIALOG_BUTTON_OFF
#undef   CONTROLS_BUTTON_SIZE                

// neue Werte neu definieren
#define  CONTROLS_DIALOG_CAPTION_HEIGHT   60   // Höhe des Fenstertitels
#define  CONTROLS_DIALOG_BUTTON_OFF       20   // Einrückung/Position der Schaltflächen (Kreuzen, Zusammenklappen)
//--- BmpButton
#define  CONTROLS_BUTTON_SIZE             40   // Standardgröße der Schaltfläche (16 x 16)


 
Sunriser #:

Ich danke Ihnen. Ich habe es in meinem Code so gemacht, es wurde bequem, das Fenster zu ziehen und drücken Sie das Kreuz, um das Fenster zu schließen.

Aber um die Icons der Buttons zu skalieren (minimieren/schließen) muss man anscheinend woanders suchen: BmpButton.mqh, ChartObjectsBmpControls.mqh, etc.

Icons sind Bitmaps - sie sind als bmp-Dateien im Verzeichnis MQL5/Include/Controls/res/ gespeichert - wenn Sie sie vergrößern, sehen sie schlecht aus. Idealerweise brauchen Sie ein separates Unterverzeichnis (z.B. /hires/) und generieren dafür Bilder mit guter Qualität und direkte Ressourcenlinks von den Quellen zu diesem Verzeichnis.

Nur wenn man alles starr umdefiniert, wie bei den Makros, dann wird es auf einem normalen Monitor eine Riesengröße. Das heißt, die Lösung ist nur "für sich selbst". In einem guten Weg ist es notwendig, Größen und Bilder dynamisch zu definieren, d.h. einen MQL5-Wrapper zu schreiben, der den aktuellen DPI analysiert.