Обсуждение статьи "Как создать графическую панель любой сложности и как это работает" - страница 15

 
Stanislav Korotky #:
Смотрите файл /MQL5/Include/Controls/Defines.mqh - все константы там в виде пикселей(!) определены, поэтому при смене DPI все "плывет". Если чинить по быстрому, то в своем коде нужно переопределить все эти константы.

Благодарю. Сделал у себя в коде вот так, стало удобно перетаскивать окно и попадать в крестик закрытия окна.

А чтобы сами иконки кнопок (свернуть/закрыть) отмасштабировать надо еще где-то копаться видимо: BmpButton.mqh, ChartObjectsBmpControls.mqh и т.п.

#include <Controls\Defines.mqh>
// убираем старые значения
#undef  CONTROLS_DIALOG_CAPTION_HEIGHT
#undef  CONTROLS_DIALOG_BUTTON_OFF
#undef  CONTROLS_BUTTON_SIZE                

// переопределяем новые значения
#define CONTROLS_DIALOG_CAPTION_HEIGHT   60   // высота заголовка окна
#define CONTROLS_DIALOG_BUTTON_OFF       20   // отступ/позиция кнопок (крестик, свернуть)
//--- BmpButton
#define CONTROLS_BUTTON_SIZE             40   // default size of button (16 x 16)


 
Sunriser #:

Благодарю. Сделал у себя в коде вот так, стало удобно перетаскивать окно и попадать в крестик закрытия окна.

А чтобы сами иконки кнопок (свернуть/закрыть) отмасштабировать надо еще где-то копаться видимо: BmpButton.mqh, ChartObjectsBmpControls.mqh и т.п.

Иконки растровые - хранятся в виде bmp-файлов в каталоге MQL5/Include/Controls/res/ - если увеличивать, то будут смотреться плохо. По идее нужно отдельный подкаталог (типа /hires/) и для него сгенерировать картинки с хорошим качеством и на него направить ссылки ресурсные из исходников.

Только если всё это переопределить жёстко, как сделали для макросов, то на обычном мониторе станет гигантского размера. То есть решение только "для себя". По хорошему, нужно определять размеры и картинки динамически, то есть написать обвязку на MQL5, анализирующую текущее DPI.