Comment() のフォント・サイズは変えられない...orz

表題の通り、MQLの Comment()関数で出力される文字列は、フォントの種類やサイズを変えることができません。
フォントを指定して表示させたい場合は、昨日の記事でちらっと紹介したとおり、文字オブジェクト(OBJ_LABEL) を使うしかありません。ただ、OBJ_LABEL は、改行ができず、62文字しか表示できないので、そのままでは微妙に使いづらいです。


そこで、Comment()関数風に使える CommentOBJ()関数をサンプルとしてこちらに用意してみました。使い方は、

Comment(msg);

CommentOBJ(msg);

に書き換えて、フォントや配置に関する設定をゴニョゴニョするだけです。
(ややこしいけど難しくは無いと思います..)


実際の効果は…
(1) Comment()の出力

(2) CommentOBJ() で、MS 明朝

(3) 赤字の MS ゴシック

(4) フォントサイズを大きめ

といった感じになります。



CommentOBJ() が内部で何を行なっているのかというと…

(1) 改行の入った文字列を改行単位で分割し、
(2) さらに60文字ずつ分割して並べている
だけです。



実用上はいくつか制約があって、
横に61文字以上書く場合は、等幅フォントに限定される。
60文字で分割される位置に日本語は使えない。
OSやフォントの違いで、60文字ブロックの長さが異なる。
という点に注意する必要があります。
特に3番目が厄介で、コード内部には、WindowsXP用とVista用に BlockSize[] という60文字ブロックのサイズ表を用意していますが、フォントによっては、BlockShift 値を調整しないと綺麗に並びません...orz



お約束…?


MetaTrader 4 やる夫トレーダー(MQL4で複数行を効率良く表示させるテクニック) に対抗して、ちゅるやさんのAAをチャート上に描いてみました。

AAを描くときは、「MS Pゴシック」という等幅ではないフォントを指定する必要があります。
改行で繋ぐだけなので、何かの機会に使いたい人はこれをどうぞ。^^;