Discussão do artigo "Como criar um painel gráfico de qualquer nível de complexidade" - página 15

 
Stanislav Korotky #:
Consulte o arquivo /MQL5/Include/Controls/Defines.mqh - todas as constantes estão definidas como pixels(!), portanto, tudo "flutua" ao alterar o DPI. Se quiser corrigir isso rapidamente, será necessário redefinir todas essas constantes em seu código.

Obrigado. Fiz isso em meu código, pois ficou conveniente arrastar a janela e clicar na cruz para fechá-la.

Mas para dimensionar os ícones dos botões (minimizar/fechar) você precisa procurar em outro lugar, aparentemente: BmpButton.mqh, ChartObjectsBmpControls.mqh, etc.

#include <Controls\Defines.mqh>
// remover valores antigos
#undef   CONTROLS_DIALOG_CAPTION_HEIGHT
#undef   CONTROLS_DIALOG_BUTTON_OFF
#undef   CONTROLS_BUTTON_SIZE                

// redefinir novos valores
#define  CONTROLS_DIALOG_CAPTION_HEIGHT   60   // altura do título da janela
#define  CONTROLS_DIALOG_BUTTON_OFF       20   // recuo/posição do botão (cruzado, recolhido)
//--- BmpButton
#define  CONTROLS_BUTTON_SIZE             40   // tamanho padrão do botão (16 x 16)


 
Sunriser #:

Obrigado. Fiz isso em meu código, pois ficou conveniente arrastar a janela e pressionar a cruz para fechar a janela.

Mas para dimensionar os ícones dos botões (minimizar/fechar), você precisa procurar em outro lugar, aparentemente: BmpButton.mqh, ChartObjectsBmpControls.mqh, etc.

Os ícones são bitmap - eles são armazenados como arquivos bmp no diretório MQL5/Include/Controls/res/ - se você ampliá-los, eles terão uma aparência ruim. Idealmente, você precisa de um subdiretório separado (como /hires/) e gerar imagens de boa qualidade para ele e direcionar os links de recursos das fontes para ele.

Somente se você redefinir tudo rigidamente, como fizeram com as macros, então, em um monitor normal, o tamanho será gigante. Ou seja, a solução é apenas "para você mesmo". Em um bom sentido, é necessário definir tamanhos e imagens dinamicamente, ou seja, escrever um wrapper MQL5 que analise o DPI atual.