グラフィックライブラリーをゼロから作成する

 
セイバー
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

クラウドソーシングによるGUI。 オープンベータテストを実施。

アレクセイ・バーバシン, 2020.03.07 21:25

「しかし、すべてをオブジェクトで行う方が簡単かもしれない」 - これは理屈以上のものです。

"もちろん部分的には頼りますよ。"- ということで、すぐに修正されます。

class CCoordPBase

Наследуемся от CObject, то есть:

class CCoordPBase : public CObject

Хотя наверное можно и по другому:

class Control : public CObject

CObjectは、デベロッパーズ・ライブラリのすべてのオブジェクトの基本クラスです。C++やC#とのアナロジーで作られています。シャープの基本オブジェクト(型)はObjectです。

座標と寸法はコントロールのプロパティであり、ボーダーの、色と太さ、丸みの半径、アイコンやテキストも同様である。

まず、どのような制御が初歩的なものかを定義し、基本的な性質を説明する必要があります。

もちろん、先に定義したプロパティの一部が子孫で使われないこともあり、それは問題ないが、基本的なものは最も普遍的なものにした方が良い。

遠くから検索するのを避けるため、ここでは簡単なユニバーサル・コントロールの例を紹介します。

背景、枠線、半径、アイコン、テキストを含む。

Labelであれば背景、枠線、アイコンは指定せず、Panelであれば内容は指定せず、画像ボタンであればアイコンのみ指定し、画像付きボタンであれば背景、枠線、画像を指定します。

つまり、この構図は、ほとんどの操作系でかなり普遍的なものなのです。


なるほど、座標の保存でホバーリング時のスタイルを変更するという質問ですが...。わかりきったことではありますが

コントロールによる標準的なビリオテックはありますか?

 

CObjectの 本質は、すべてのオブジェクトを型付けする ことである。

例えば、リストライブラリ(項目リスト、コンボボックス、チェックリストなど)が必要です。各要素の種類に応じて、Anatoly が行ったように異なるタイプの配列を作成することもできますし、既製のツールであるCArrayObj を使用することもできます。

つまり、多くのコードの断片は発明する必要がなく、すでに存在しており、それを取って使うだけでいいのです。

 
Alexandr Andreev:

それは理解しています。問題は、座標を維持したままホバーリング時にスタイルを変更することです...。すでに明らかになっているようですが

コントロールに標準のビリオがあるのか?

開発者からの標準ライブラリは ベースとして捉えることができ、私はそこに恥ずかしいものはないと思っています、彼らの階層。

もちろん、そこから先は、直接の建設に関わるものはすべて捨てるべきですが、イベントの伝達の仕組みは残すべきで、それは実に普遍的なものなのです

この技術を使えば、どんなに複雑なコントロールでも、どのクラスに属していても、イベントは素オブジェクトの型付けシステムを通して受け渡される。

基本的なコントロールは、基礎となる CControls に描画され、その後 OnPaint() イベントが生成されます。これにより、子コントロールの再描画/再描画が可能になり、一般的にユーザーが好きなようにコントロールを再描画することができるようになります。

 
Alexandr Andreev:

頑張れ!!!!!!!

で、簡単なインタラクションを作ろうと思っていたのですが

行や列の場合は、前のオブジェクトの左側など、位置を入力する場所です。

そこで、ユニバーサル・コントローラーを書くことにします

それこそ、初歩的なインタラクションを書けばいいのです。

一番最初の基本的なコントローラは、必要なプロパティをすべて持っている必要はなく、背景だけで十分です。

結局のところ、コントロール自体をレンダリングするためには、それに対応する関数が含まれることになります。そのため、何かプロパティを追加する場合、1つの関数だけを変更する必要があります。

エレメント・ヒエラルキーによると?

CObjectは基本型

class CControl : public CObject - ライブラリ自体のベースコントロール。

class CContainerControl : public CControl - グループコントロールです。そのフィールドの1つは、ネストされたコントロールの配列になります。CWndContainer標準 ライブラリに例があります。

 
Sashaさんはすでにコーディングを始めているので、MQLでオープンソースプロジェクトを作ってみて ください。もしかしたら、あるかもしれない。
 
Алексей Барбашин:
サーシャせっかくコーディングを始めたのだから、MQLでオープンソースのプロジェクトを作れば、みんなで開発して共有することができますよ。もしかしたら、あるかもしれない。

とりあえず保留で...。標準ライブラリを見て みると......。徒然なるままに

あまりないとは思いますが、自分でコントールを書いた方がいいのでは...。または継承する

CChartObject

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Алексей Барбашин:
サーシャ もうコーディングは始めているんだから、MQLでオープンソースのプロジェクトを作ればいいんだよ。もしかしたら、あるかもしれない。

ゼロから始めるのは少し早いと思う。まずは何かを作り上げることが必要だ

 
Alexandr Andreev:

とりあえず保留で...。標準ライブラリを見て みると......。徒然なるままに

(あまりないですが))) でも、自分で制御を書いた方が...。またはそれを継承することができます

CChartObject

ダメだ、ダメだーーーー

よく見てください

このコントローラーは、まさに今が旬です離散的なチャートオブジェクトは必要ない!キャンバスに描かなければならない。それが、発展性と広い可能性を得る唯一の方法なのです。

そして、メインコントローラーを自作しなければならないこと、これは間違いないです。

標準ライブラリは、CWndObjectとCWndにプロパティとステートを分けていますが、私たちはすべてを1つのコントロールに統合する必要があります。

 
Алексей Барбашин:

ダメだ、ダメだーーーー

よく見てください

このコントローラーは、どこにもない方法です離散的なチャートオブジェクトは必要ない!カンヴァスに描かなければならない。それだけが、私たちに発展性と広い可能性を与えてくれるのです。

そして、メインコントローラーを自作しなければならないこと、これは間違いないです。

標準ライブラリのプロパティとステートは、CWndObjectとCWndに分かれており、1つのコントロールにすべてを統一する必要があります。

25分かけてプロジェクトを作ろうと したら作成されてしまったので、今は公開する方法を検討中です

 
Alexandr Andreev:

まっさらな状態からスタートするには、ちょっと早いと思うんです。

ゼロから始めるのは良くないと思うので。

非常に賢い人たちが、多くの時間と知識を費やして、同じ標準ライブラリや アナトリーの ライブラリを作っているのです。

人は時間と知識を費やしたのだから、それを使わないのは愚かなことだ。

両方の良いところをとって、新しいものを作ればいいんです。

他人の失敗から学ばなければならない。自分たちで作る)

理由: