ライブラリ: イージーキャンバス - ページ 4 1234567891011...19 新しいコメント x68499 2019.12.07 18:41 #31 スーパー。便利でわかりやすい。 Oleksii Chepurnyi 2019.12.13 14:39 #32 マウスボタンのステータスを追加することをお勧めする。スピードには影響しないが、役に立つだろう ) struct Window { long ChartId; // 現在のウィンドウ識別子 uint Color; // ウィンドウの背景色 int Width; // ウィンドウの幅 int Height; // ウィンドウの高さ int height[]; // サブウィンドウの高さ int Left_bar; // ウィンドウの一番左のバーの番号 double Right_bar; // ウィンドウの一番右のバーの数 double Total_bars; // ウィンドウ内のバーの最大数 int BarsInWind; // ウィンドウに表示されているバーの数 double Y_min; // ウィンドウ内の価格の最小値 double Y_max; // ウィンドウ内の価格の最大値 double dy_pix; // 1ピクセルの価格変動 int dx_pix; // ピクセルあたりのバーの数を変更する int MouseX; // マウスポインタの現在位置の座標X int MouseY; // マウスポインタの現在位置の座標Y int MouseStatus; // マウスボタンの状態 double MouseBar; // マウスポインタの現在のバー位置 double MousePrice; // マウスポインタの現在価格 datetime MouseTime; // マウスポインタの現在時刻 int MouseSubWin; // マウスポインタがあるサブウィンドウの番号。 int WindowsTotal;// メイン・ウィンドウを含むサブウィンドウの合計 int SubWin; // 現在のサブウィンドウ datetime time[]; // ウィンドウ内のすべての可視バーのオープン時間の配列 }; void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { if(id==CHARTEVENT_MOUSE_MOVE) { W.MouseX=(int)lparam; W.MouseY=(int)dparam; W.MouseStatus=(int)sparam; W.MouseBar=(double)W.Left_bar+1-(double)W.MouseX/(double)W.dx_pix; W.MouseSubWin=XYToTimePrice(W.MouseX,W.MouseY,W.MouseTime,W.MousePrice,id); if(W.MouseSubWin>0) for(int i=0;i<W.MouseSubWin;i++) W.MouseY=W.MouseY-W.height[i]-2; } if(id==CHARTEVENT_CHART_CHANGE) ChartChanged(); if(OnZ) SetOnChart(sizeArr); if(OnChart) MyChartEvent(id,lparam,dparam,sparam); } Nikolai Semko 2019.12.16 18:51 #33 Oleksii Chepurnyi:マウスボタンのステータスを追加することをお勧めする。スピードには影響しないが、役に立つだろう ) あまり意味があるとは思えないので、賛成できない。 ポイントは、マウスボタンとキーのステータスはイベントモデルであり、このイベントの発生がキャッチされる場所、すなわちOnChartEventでのみ処理されるべきであるということです。 イベント・ハンドラの外でイベントの発生をポーリングする無限ループを制限するつもりはないだろう。したがって、これらのクリックの処理はすべてOnChartEvent内で行われるべきで、そのステータスはlparamとsparamにあるはずなのに、このステータスをOnChartEventの外に置くことに何の意味があるのでしょうか。 ただし、コードの可読性を向上さ せるために、マウス・イベント識別子の新しい構造を導入するという目的は別である。 Oleksii Chepurnyi 2019.12.16 19:58 #34 Nikolai Semko:あまり意味がないと思うので、賛成できない。重要なのは、マウス・ボタンやキーの状態はイベント・モデルであり、このイベントの発生がキャッチされる場所、つまりOnChartEventでのみ処理されるべきであるということだ。 イベント・ハンドラの外でイベントの発生をポーリングする無限ループを制限するつもりはないだろう。では、このステータスをOnChartEventの外に置くことに何の意味があるのでしょうか?これらのクリックの処理はすべてOnChartEventで行われるべきで、そのステータスはlparamとsparamにあります。 ただし、コードの可読性を向上さ せるために、マウス・イベント識別子の新しい構造を導入するという目的は別である。 そして、なぜマウス座標を保存するのでしょうか?) また、イベントドリブン ) ループについては理解していませんでした...。 特に、マウスでドラッグしたときにオブジェクトの一部が描画されないようにするためにステータスが必要でした。 Nikolai Semko 2019.12.16 21:26 #35 Oleksii Chepurnyi:なぜマウス座標を保存するのか?) また、イベントドリブン ) マウス座標は別問題です。現在のマウス座標はイベント情報ではない。イベントはその変化です。 OnChartEventの外でマウス座標が必要になることがあるかもしれない。例えばここ だ。 Oleksii Chepurnyi: ループについて理解していませんでした...。特に、マウスでドラッグしたときにオブジェクトの一部を描画しないステータスが必要でした。 マウスをドラッグしているとき、オブジェクトの一部を再描画するコマンドは、マウスの座標が変化した瞬間とマウスが押されている間にOnChartEventから呼び出され、OnChartEventはこのステータスを持っています。 同じことをOnChartEventからでなく、同時にWindow 構造体のインスタンスWにMouseStatusがあるとすると、マウスボタンを離した瞬間を捕らえるために、このパラメータ(MouseStatus)のポーリングの無限ループを組織しなければならず、CPUがハングアップしてしまいます。 このループはOnChartEventの中だけで必要なものではない。 私が言いたいのは、ボタン・ステータスはOnChartEventからしか使えないし、使うべきでないということだ。 もし間違っていたら、このステータスがOnChartEventからでなくても 必要な具体例を教えてください。 Oleksii Chepurnyi 2019.12.16 22:17 #36 Nikolai Semko:もし間違っているなら、このステータスがOnChartEvent以外から 要求される具体的な例を示してほしい。 上に例を書きましたが、すべて問題なく動作しています。) OnChartEventでは、マウスを動かしたときにパラメータを変更し、キャンバスを再描画するコマンドを与えます。構造体にパラメータがなければ、sparamをオブジェクトに渡し、そこから別のオブジェクトに渡し、そこからDraw()メソッドに渡す必要がある。 Stanislav Korotky 2019.12.16 23:35 #37 Nikolai Semko:マウス座標は別問題だ。現在のマウス座標はイベント情報ではない。イベントはその変化である。OnChartEventの外でマウス座標が必要とされる場合があるかもしれない。例えばここ だ。さて、マウスをドラッグして、マウス座標が変化した瞬間と、マウスボタンが押されている間に、OnChartEventからオブジェクトの一部を再描画するコマンドが呼び出されるのだが、OnChartEventはこのステータスを持っているのに、なぜWindow構造体に埋め込むのか?同じことをOnChartEventからではなく、同時にWindow 構造体のインスタンスWにMouseStatusがあるとすると、マウスボタンを離した瞬間を捕らえるために、このパラメータ(MouseStatus)のポーリングの無限ループを組織しなければならず、CPUがハングアップしてしまう。このループは OnChartEvent でのみ必要ではない。ボタン・ステータスはOnChartEventからのみ使用可能で、OnChartEventはすでにボタン・ステータスを持っている。 もし私が間違っているなら、このステータスがOnChartEventからでなくても 必要な具体例を教えてください。 非常に奇妙な推論だ。ロジックがまったくない。 マウス座標も押されたキーも外部状態である。それはパラメーターを通してハンドラーに渡され、オブジェクトの内部変数に入れられるのであれば(それは確かに便利だが)、部分的ではなく全体としてそこにあるべきだ。ライブラリとは定義上、自分自身のニーズのために作られたものではなく、他の人の潜在的なニーズを考慮して一般化された形で作られたものである。すべてのニーズを事前に知ることはできないのだから、このような人為的な制限を設けないだけだ。 Maxim Kuznetsov 2019.12.16 23:36 #38 Oleksii Chepurnyi:上に例を書きましたが、すべてうまくいきました )OnChartEventでマウスを動かしたときにパラメータを変更し、キャンバスを再描画するコマンドを与えます。構造体にパラメータがなければ、sparamをオブジェクトに渡し、そこから別のオブジェクトに渡し、そこからDraw()メソッドに渡す必要がある。 これはこのジャンルの典型的な例で、すべてのウィンドウ・ライブラリでは、マウス・ボタンの状態はカーソル座標と一緒に1つの構造体で渡されます。、これらはすべて一緒になって1つの実体を記述しており、別々にすることはまったくできないからです。 Nikolai Semko 2019.12.17 06:04 #39 オーケー。わかったね。 Nikolai Semko 2019.12.26 06:43 #40 バージョン1.29に更新 新しい 1. コード記述の簡素化と可読性の向上の ため、以下の定義を追加: #define _Comment Canvas.Comm #define _X Canvas.X #define _Y Canvas.Y #define _TimePos Canvas.TimePos #define _Bar Canvas.Bar #define _Price Canvas.Price #define _CommXY(x,y,str) Canvas.TextPosition(x,y);\ Canvas.Comm(str); #define _Font Canvas.CurentFont #define _PixelSet Canvas.PixelSet #define _MouseX W.MouseX #define _MouseY W.MouseY #define _MouseBar W.MouseBar #define _Width W.Width #define _Height W.Height #define _Left_bar W.Left_bar #define _Right_bar W.Right_bar #define _BarsInWind W.BarsInWind 2. Window 構造体に MouseStatus パラメータを追加。ワーカーが要求する 4 つの値を取ることができます: NO_PRESSED (0) left_button_pressed (1) 右ボタンが押された (2) 左と右のボタンが押された (3) 1234567891011...19 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
マウスボタンのステータスを追加することをお勧めする。スピードには影響しないが、役に立つだろう )
マウスボタンのステータスを追加することをお勧めする。スピードには影響しないが、役に立つだろう )
あまり意味があるとは思えないので、賛成できない。
ポイントは、マウスボタンとキーのステータスはイベントモデルであり、このイベントの発生がキャッチされる場所、すなわちOnChartEventでのみ処理されるべきであるということです。
イベント・ハンドラの外でイベントの発生をポーリングする無限ループを制限するつもりはないだろう。したがって、これらのクリックの処理はすべてOnChartEvent内で行われるべきで、そのステータスはlparamとsparamにあるはずなのに、このステータスをOnChartEventの外に置くことに何の意味があるのでしょうか。
ただし、コードの可読性を向上さ せるために、マウス・イベント識別子の新しい構造を導入するという目的は別である。
あまり意味がないと思うので、賛成できない。
重要なのは、マウス・ボタンやキーの状態はイベント・モデルであり、このイベントの発生がキャッチされる場所、つまりOnChartEventでのみ処理されるべきであるということだ。
イベント・ハンドラの外でイベントの発生をポーリングする無限ループを制限するつもりはないだろう。では、このステータスをOnChartEventの外に置くことに何の意味があるのでしょうか?これらのクリックの処理はすべてOnChartEventで行われるべきで、そのステータスはlparamとsparamにあります。
ただし、コードの可読性を向上さ せるために、マウス・イベント識別子の新しい構造を導入するという目的は別である。
そして、なぜマウス座標を保存するのでしょうか?) また、イベントドリブン )
ループについては理解していませんでした...。
特に、マウスでドラッグしたときにオブジェクトの一部が描画されないようにするためにステータスが必要でした。
なぜマウス座標を保存するのか?) また、イベントドリブン )
マウス座標は別問題です。現在のマウス座標はイベント情報ではない。イベントはその変化です。
OnChartEventの外でマウス座標が必要になることがあるかもしれない。例えばここ だ。
ループについて理解していませんでした...。
特に、マウスでドラッグしたときにオブジェクトの一部を描画しないステータスが必要でした。
マウスをドラッグしているとき、オブジェクトの一部を再描画するコマンドは、マウスの座標が変化した瞬間とマウスが押されている間にOnChartEventから呼び出され、OnChartEventはこのステータスを持っています。
同じことをOnChartEventからでなく、同時にWindow 構造体のインスタンスWにMouseStatusがあるとすると、マウスボタンを離した瞬間を捕らえるために、このパラメータ(MouseStatus)のポーリングの無限ループを組織しなければならず、CPUがハングアップしてしまいます。
このループはOnChartEventの中だけで必要なものではない。
私が言いたいのは、ボタン・ステータスはOnChartEventからしか使えないし、使うべきでないということだ。
もし間違っていたら、このステータスがOnChartEventからでなくても 必要な具体例を教えてください。
もし間違っているなら、このステータスがOnChartEvent以外から 要求される具体的な例を示してほしい。
上に例を書きましたが、すべて問題なく動作しています。)
OnChartEventでは、マウスを動かしたときにパラメータを変更し、キャンバスを再描画するコマンドを与えます。構造体にパラメータがなければ、sparamをオブジェクトに渡し、そこから別のオブジェクトに渡し、そこからDraw()メソッドに渡す必要がある。
マウス座標は別問題だ。現在のマウス座標はイベント情報ではない。イベントはその変化である。
OnChartEventの外でマウス座標が必要とされる場合があるかもしれない。例えばここ だ。
さて、マウスをドラッグして、マウス座標が変化した瞬間と、マウスボタンが押されている間に、OnChartEventからオブジェクトの一部を再描画するコマンドが呼び出されるのだが、OnChartEventはこのステータスを持っているのに、なぜWindow構造体に埋め込むのか?
同じことをOnChartEventからではなく、同時にWindow 構造体のインスタンスWにMouseStatusがあるとすると、マウスボタンを離した瞬間を捕らえるために、このパラメータ(MouseStatus)のポーリングの無限ループを組織しなければならず、CPUがハングアップしてしまう。
このループは OnChartEvent でのみ必要ではない。
ボタン・ステータスはOnChartEventからのみ使用可能で、OnChartEventはすでにボタン・ステータスを持っている。
もし私が間違っているなら、このステータスがOnChartEventからでなくても 必要な具体例を教えてください。
非常に奇妙な推論だ。ロジックがまったくない。
マウス座標も押されたキーも外部状態である。それはパラメーターを通してハンドラーに渡され、オブジェクトの内部変数に入れられるのであれば(それは確かに便利だが)、部分的ではなく全体としてそこにあるべきだ。ライブラリとは定義上、自分自身のニーズのために作られたものではなく、他の人の潜在的なニーズを考慮して一般化された形で作られたものである。すべてのニーズを事前に知ることはできないのだから、このような人為的な制限を設けないだけだ。
上に例を書きましたが、すべてうまくいきました )
OnChartEventでマウスを動かしたときにパラメータを変更し、キャンバスを再描画するコマンドを与えます。構造体にパラメータがなければ、sparamをオブジェクトに渡し、そこから別のオブジェクトに渡し、そこからDraw()メソッドに渡す必要がある。
これはこのジャンルの典型的な例で、すべてのウィンドウ・ライブラリでは、マウス・ボタンの状態はカーソル座標と一緒に1つの構造体で渡されます。
、これらはすべて一緒になって1つの実体を記述しており、別々にすることはまったくできないからです。
バージョン1.29に更新
新しい
1. コード記述の簡素化と可読性の向上の ため、以下の定義を追加:
2. Window 構造体に MouseStatus パラメータを追加。ワーカーが要求する 4 つの値を取ることができます: