Adwizard/Base/Interface.mqh
2025-04-11 13:28:40 +03:00

52 lines
4.8 KiB
MQL5

//+------------------------------------------------------------------+
//| Interface.mqh |
//| Copyright 2024, Yuriy Bykov |
//| https://www.mql5.com/ru/users/antekov |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022-2024, Yuriy Bykov"
#property link "https://www.mql5.com/ru/users/antekov"
#property version "1.01"
//+------------------------------------------------------------------+
//| Базовый класс визуализации различных объектов |
//+------------------------------------------------------------------+
class CInterface {
protected:
static ulong s_magic; // Magic эксперта
bool m_isActive; // Интерфейс активен?
bool m_isChanged; // Есть ли изменения у объекта?
public:
CInterface(); // Конструктор
virtual void Activate();
virtual void Deactivate();
virtual void Redraw() = 0; // Отрисовка на графике изменённых объектов
virtual void Changed() { // Установка флага наличия изменений
m_isChanged = true;
}
virtual void ChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {}
};
ulong CInterface::s_magic = 0;
//+------------------------------------------------------------------+
//| Конструктор |
//+------------------------------------------------------------------+
CInterface::CInterface() :
m_isActive(!MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_VISUAL_MODE)),
m_isChanged(true) {}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CInterface::Activate() {
m_isActive = (!MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_VISUAL_MODE));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CInterface::Deactivate() {
m_isActive = false;
}
//+------------------------------------------------------------------+