記事"任意の複雑さのレベルのグラフィカルなパネルを作成する方法"についてのディスカッション - ページ 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   // ボタンのデフォルトサイズ (16 x 16)


 
Sunriser #:

ありがとう。ウィンドウをドラッグして、十字キーでウィンドウを閉じることができるようになりました。

しかし、ボタンのアイコン(最小化/閉じる)を拡大縮小するには、どうやら別の場所を掘る必要があるようだ:BmpButton.mqh、ChartObjectsBmpControls.mqhなど。

アイコンはビットマップで、MQL5/Include/Controls/res/ ディレクトリにbmpファイルとして保存されています。理想的には、(/hires/のような)別のサブディレクトリが必要で、そのために質の良い画像を生成し、ソースからのリソースリンクを直接そこにリンクすることです。

彼らがマクロのためにしたように、それをすべて厳格に再定義した場合のみ、通常のモニター上では巨大なサイズになる。つまり、解決策は「自分のため」にしかない。つまり、現在のDPIを分析するMQL5ラッパーを書く必要がある。