ライブラリ: イージーキャンバス - ページ 2

 
MT4バージョンはこちら
 
バージョン1.16:いくつかのバグを修正し、いくつかの機能を高速化しました。
 
バージョン1.21:いくつかのバグを修正
 

こんにちは。

追加した方がいいですか?覚えていないから)

void ChartChanged()
  {
   static int preWinTotal=W.WindowsTotal;
   if(W.Y_max==0 && CheckPointer(Canvas)!=POINTER_INVALID) {delete Canvas; Canvas=new iCanvas;}
   GetWindowProperties(W);
   if (preWinTotal!=W.WindowsTotal) for (int i=ArraySize(iC)-1; i>=0; i--) if(CheckPointer(iC[i])!=POINTER_INVALID) if (iC[i].SubWin>=W.WindowsTotal) iC[i].SubWin--;
   for (int i=ArraySize(iC)-1; i>=0; i--)
     {
      if(CheckPointer(iC[i])!=POINTER_INVALID)
         if(iC[i].FullWinCanvWidth())
           {
            if(iC[i].FullWinCanvHeight()) {if(W.Width!=WidOld || W.height[iC[i].SubWin]!=HeiOld[iC[i].SubWin] ) iC[i].Resize(W.Width,W.height[iC[i].SubWin]);}
            else {if(W.Width!=WidOld) iC[i].Resize(W.Width,iC[i].Height());}
           }
      else { if(iC[i].FullWinCanvHeight()) if(W.height[iC[i].SubWin]!=HeiOld[iC[i].SubWin]) {iC[i].Resize(iC[i].Width(),W.height[iC[i].SubWin]); HeiOld[iC[i].SubWin]=W.height[iC[i].SubWin];}}
      else ArrayRemove(iC,i,1);
     }
   WidOld=W.Width; 
   for(int i=ArraySize(iC)-1; i>=0; i--)        HeiOld[iC[i].SubWin] = W.height[iC[i].SubWin];
   preWinTotal=W.WindowsTotal;
   XYToTimePrice(0,0,W.MouseTime,W.MousePrice,CHARTEVENT_CHART_CHANGE);
  }
 
Oleksii Chepurnyi:

こんにちは。

追加しましょうか?覚えていないから)


KBで修正しました。
コードを確認してください。確認せずに修正しました。多分、私は何かを考慮していなかった。

void ChartChanged()
  {
   static int preWinTotal=W.WindowsTotal;
   if(W.Y_max==0 && CheckPointer(Canvas)!=POINTER_INVALID) {delete Canvas; Canvas=new iCanvas;}
   GetWindowProperties(W);
   if(preWinTotal!=W.WindowsTotal) for(int i=ArraySize(iC)-1; i>=0; i--) if(CheckPointer(iC[i])!=POINTER_INVALID) if(iC[i].SubWin>=W.WindowsTotal) iC[i].SubWin--;
   for(int i=ArraySize(iC)-1; i>=0; i--)
     {
      if(CheckPointer(iC[i])!=POINTER_INVALID)
         if(iC[i].FullWinCanvWidth())
           {
            if(iC[i].FullWinCanvHeight())
              {
               if(W.Width!=WidOld || W.height[iC[i].SubWin]!=HeiOld[iC[i].SubWin]) iC[i].Resize(W.Width,W.height[iC[i].SubWin]);
              }
            else {if(W.Width!=WidOld) iC[i].Resize(W.Width,iC[i].Height()); }
           }
      else
        {
         if(iC[i].FullWinCanvHeight())
            if(W.height[iC[i].SubWin]!=HeiOld[iC[i].SubWin]) iC[i].Resize(iC[i].Width(),W.height[iC[i].SubWin]);
        }
      else ArrayRemove(iC,i,1);
      HeiOld[iC[i].SubWin]=W.height[iC[i].SubWin];
     }
   WidOld=W.Width;
   preWinTotal=W.WindowsTotal;
   XYToTimePrice(0,0,W.MouseTime,W.MousePrice,CHARTEVENT_CHART_CHANGE);
  }
 
Nikolai Semko:


KBで修正しました。
コードを確認してください。確認せずに修正しました。多分、私は何かを考慮していなかった。

これですべてOKです。)

iC配列を追加する目的は何ですか?

 
Oleksii Chepurnyi:

もう大丈夫だ )

iCアレイを追加する目的は何ですか?

サブウィンドウとiCanvasインスタンスのセットを制御するためです。結局のところ、ウインドウはインジケーターの作業の過程で追加したり削除したりすることができます。
例えば、このインジケーターではそれが必要です:

https://www.mql5.com/ja/code/25414

Система линейных алгебраических уравнений на каждом баре
Система линейных алгебраических уравнений на каждом баре
  • www.mql5.com
Данная работа преследует 3 цели: Продемонстрировать работу индикатора сразу в двух окнах: в главном и подокне. Это достигается с помощью применения класса iCanvas.Компактное решение системы линейных алгебраических уравнений с помощью рекурсии.Продемонстрировать и доказать некоторым искателям грааля несостоятельность утверждения, что применение...
 
Nikolai Semko:

これは、複数のサブウィンドウと複数の iCanvas インスタンスを制御するために行われます。結局のところ、インジケータの作業過程でウィンドウを追加したり削除したりすることができます。
例えば、このインジケーターにはそれが必要です:

https://www.mql5.com/ja/code/25414

リンクを修正しました - プロフィールにリンクされていましたが、そこでは誰でもアクセスできません。
 
Artyom Trishkin:
リンクを修正しました - プロフィールにつながっていたのですが、そこでは全員に閉鎖されています。
ありがとうございます)))
 
バージョン1.24:いくつかのバグを修正。