Версия 1.01
Новое:
- Реализована работа с подокнами
- Добавлены в структуру Windows значения MouseSubWin, WindowsTotal, SubWin
int MouseSubWin; // текущий номер подокна, в котором находится указатель мыши int WindowsTotal;// всего подокон, включая главное окно. int SubWin; // текущее подокно, к которому привязан Canvas
Версия 1.06
Исправлены некоторые ошибки и алогизмы.
если не нужен экземпляр класса Canvas на полное окно, то его можно удалить и (или) изменить на частичное окно
Например:
delete Canvas; Canvas= new iCanvas(0,0,"iCanvas",300,0); // только левая полоса окна шириной 300 пикселей. Изменение размеров окна контролируется // Canvas= new iCanvas(0,0,"iCanvas",0,300); // только верхняя полоса окна высотой 300 пикселей. Изменение размеров окна контролируется // Canvas= new iCanvas(200,100,"iCanvas",300,300); // квадрат 300x300 пикселей со стартовой позицей в точке (200,100). Изменение размеров окна не контролируется
так же можно создавать новые экземпляры класса и инициализировать их в момент создания
например:
iCanvas C2(300,200,"Canvas2",200,150,COLOR_FORMAT_XRGB_NOALPHA,1);
Добрый день.
Может добавить? А то не запоминает )
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); }
Добрый день.
Может добавить? А то не запоминает )
Спасибо!
Поправил в КБ.
Проверьте, пожалуйста, на своем коде. А то исправил не проверяя. Может что-то не учел.
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); }
Спасибо!
Поправил в КБ.
Проверьте, пожалуйста, на своем коде. А то исправил не проверяя. Может что-то не учел.
Сейчас все ОК )
Хотел спросить, с какой целью массив iC добавлен?
Сейчас все ОК )
Хотел спросить, с какой целью массив iC добавлен?
Это сделано для контроля множества подокон и множества экземпляров iCanvas. Ведь окна могут довавляться и удаляться в процессе работы
индикатора.
Например, для этого индикатора это необходимо:

- www.mql5.com

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Easy Canvas:
Данная библиотека и класс iCanvas упростит написание программ с применением Canvas.
Автор: Nikolai Semko