//+------------------------------------------------------------------+
#property copyright "Daniel Jose"
//+------------------------------------------------------------------+
#define def_Prefix  "Demo"
//+------------------------------------------------------------------+
int OnInit()
{
    IndicatorSetString(INDICATOR_SHORTNAME, def_Prefix);
    ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true);
    ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, true);
//+----------------+    
    ChartSetInteger(0, CHART_MOUSE_SCROLL, false);
    ChartSetInteger(0, CHART_CONTEXT_MENU, false);
    ChartSetInteger(0, CHART_CROSSHAIR_TOOL, false);
//+----------------+
    ChartSetInteger(0, CHART_KEYBOARD_CONTROL, false);
    ChartSetInteger(0, CHART_QUICK_NAVIGATION, false);
//+----------------+

    return INIT_SUCCEEDED;
};
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[])
{
    return rates_total;
};
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
    string sz = "";

    switch (id)
    {
        case CHARTEVENT_KEYDOWN:
            Comment(sz);
            sz += "Key press: " + (string)lparam;
            Comment(sz);
            break;
        case CHARTEVENT_MOUSE_MOVE:
            Comment(sz);
            sz += " **** Chart Event Mouse Move ****";
            sz += "\nMouse position X: " + (string)(short)lparam;
            sz += "\nMouse position Y: " + (string)(short)dparam;
            sz += StringFormat("\nHexadecimal mask of mouse buttons is: 0x%02X", (uchar)sparam);
            Comment(sz);
            break;
        case CHARTEVENT_MOUSE_WHEEL:
            Comment(sz);
            sz += " **** Chart Event Mouse Wheel ****";
            sz += "\nMouse position X: " + (string)(short)lparam;
            sz += "\nMouse position Y: " + (string)(short)(lparam >> 16);
            sz += "\nMouse Delta: " + (string) dparam;
            sz += StringFormat("\nHexadecimal mask of mouse buttons is: 0x%02X", (uchar)(lparam >> 32));
            Comment(sz);
            break;
    }
};
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
    Comment("");
    ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, false);
    ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, false);
//+----------------+    
    ChartSetInteger(0, CHART_MOUSE_SCROLL, true);
    ChartSetInteger(0, CHART_CONTEXT_MENU, true);
    ChartSetInteger(0, CHART_CROSSHAIR_TOOL, true);
//+----------------+
    ChartSetInteger(0, CHART_KEYBOARD_CONTROL, true);
    ChartSetInteger(0, CHART_QUICK_NAVIGATION, true);
//+----------------+
};
//+------------------------------------------------------------------+