noteにて更に詳しく解説!
https://note.com/iceseeds/n/nfdae2c5ac2ef
2020/08/24追記
Youtubeにて動画解説
https://www.youtube.com/watch?v=imVHPZQanWs&list=PLAekJGpx3pyPZJjlnPF_cM0mwNLy5l1Vl&index=2&t=0s
List
https://www.youtube.com/playlist?list=PLAekJGpx3pyPZJjlnPF_cM0mwNLy5l1Vl
シンプルなPanelを作る
標準ライブラリのPanel、Dialogクラスを使ってGUIを作って行きます。
①CAppDialog にパネルベースを作成する
CAppDialogは、結合されたアプリケーションダイアログコントロールのクラスです。
↓↓ Panelを作成するを作成する最低限のコード ↓↓
#include <Controls\Dialog.mqh> --- 1
CAppDialog AppWindow; --- 2
int Reason;
int OnInit()
{
if( Reason != REASON_CHARTCHANGE && Reason != REASON_PARAMETERS )
{
if( !AppWindow.Create( ChartID(), "SampleTitle", 0, 50, 50, 500, 400 ) ) --- 3
return( INIT_FAILED );
if( !AppWindow.Run() )
return( INIT_FAILED );
}
return( INIT_SUCCEEDED );
}
void OnDeinit( const int reason )
{
if( reason != REASON_CHARTCHANGE && reason != REASON_PARAMETERS && reason != REASON_ACCOUNT )//3 && 5 && 6
{
AppWindow.Destroy( reason ); --- 4
}
Reason = reason;
}
void OnChartEvent( const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
AppWindow.ChartEvent( id, lparam, dparam, sparam ); --- 5
}
ソースコード詳細
1. Controlsフォルダの中のDialog.mqhをインクルードする。
MT4/Include/Controls フォルダの中に部品が入っている。
#include <Controls\Dialog.mqh>
2. グローバルでAppDialog クラスのインスタンスを宣言
CAppDialog AppWindow;
3. AppWindowのパネルを作成 と AppWindow実行
AppWindow.Create( int ChartID(), string "Title", int subwin, int x1, int y1, int x2, int y2 )
AppWindo.Run() で実行
if( !AppWindow.Create( ChartID(), "SimpleOrder", 0, 50, 50, 250, 170 ))
return( INIT_FAILED );
if( !AppWindow.Run() )
return( INIT_FAILED );
4. AppWindowを破棄
ココは 最重要Point!
パネルの破棄をしないと、時間枠やシンボルの各変更に、
既存のもの上に新しいパネルを追加にするので、無駄なパネルの生成になります。
void OnDeinit( const int reason )
{
AppWindow.Destroy( reason );
}
5. ChartEventイベントをAppWindow に渡す
void OnChartEvent( const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
AppWindow.ChartEvent( id, lparam, dparam, sparam );
}
実行結果
最後に
これで最小限のコードでシンプルなPanelを作ることが出来ます。
ただ勿論Panelを作るだけだと何も出来ません。
次回があれば、ボタンの設置、ボタンイベントなどをやります。
ご意見、ご要望があればコメントください。
お疲れ様。
2020/08/24追記
Youtubeにて動画解説
https://www.youtube.com/watch?v=imVHPZQanWs&list=PLAekJGpx3pyPZJjlnPF_cM0mwNLy5l1Vl&index=2&t=0s
List
https://www.youtube.com/playlist?list=PLAekJGpx3pyPZJjlnPF_cM0mwNLy5l1Vl