記事"グラフィカルインタフェース II: 区切り線とコンテキストメニュー要素(チャプター 2)"についてのディスカッション

 

新しい記事 グラフィカルインタフェース II: 区切り線とコンテキストメニュー要素(チャプター 2) はパブリッシュされました:

本稿では、区切り線要素を作成します。区切り線要素は、独立したインターフェース要素としてだけでなく、他の多くの構成要素の一部として使用することもできます。本稿ではまた、その後、コンテキストメニュークラスの開発に必要なものすべての詳細を考察します。それに加え、アプリケーションのすべてのグラフィカル・インターフェース要素へのポインタ格納の基本であるクラスに必要なすべての追加をご紹介します。

シリーズ第一弾のグラフィカルインタフェース I: ライブラリストラクチャの準備(チャプター 1)ではライブラリの目的を詳細に考察されます。

区切り線作成クラスの開発

多くの場合、コンテキストメニューでは、異なるタイプのメニュー項目のほかに1つのインターフェース要素が存在します。それが区切り線です。この要素はコンテキストメニュー以外にも存在することがあります。例としてMetaTrader取引端末のステータスバーとMetaEditorコードエディタには縦の区切り線があります。これが、このオブジェクトが他のコントロールに使用されたりグラフィカルインタフェースの別個の要素として使用することができるように別のクラスを作成する理由です。

ボリュームの錯覚を与えるためには、区切り線は、少なくとも2つの部分から構成されなければなりません。1本の線が背景よりも明るく、他方が暗い場合、これは、表面上の溝の視覚効果を作成します。区切り線の作成には2つの方法があります。(1)Objects.mqhファイルに既存する2つのCRectLabel型のプリミティブオブジェクト。または (2) OBJ_BITMAP_LABEL型のオブジェクトの作成と描画キャンパスとしての使用。2番目のオプションを使用してみましょう。標準ライブラリは、描画にはCCanvasクラスを使用するよう推薦します。このクラスには、既に設計の実装を大幅に簡素化し時間を節約する、単純な幾何学図形を描画するために必要なすべてのメソッドが既に含まれています。 

CCanvasクラスは、やはりObjects.mqhファイルに存在するプリミティブオブジェクトと似た使い方ができるように組み込まれなければなりません。これはCCanvasクラスをCChartObjectBmpLabelクラスの継承とすることで簡単にできます。後のプログラムのコンパイル時にはエラーや警告がないようにCCanvas クラスのコードには小規模の変更を導入しなくてはなりません。これは、CChartObjectBmpLabel クラスの基本クラスであるCCanvasクラスとCChartObjectクラス両方にm_chart_id フィールド(変数)があるからです。その結果、コンパイラは、このような名前の変数がすでに存在していると警告を与えます。

図1。そのような名前の変数がすでに存在しているというコンパイラからの警告

作者: Anatoli Kazharski