Опубликована статья Как создать графическую панель любой сложности и как это работает:
Автор: Vladimir Karputov
Спасибо за Статью. Очень познавательно!
да статья полезная, но не могу понять как обработать событие ON_DBL_CLICK, можете помочь?
Двойной клик - это два клика, между которыми совсем малый промежуток времени. Значит, обрабатываться может так же, как и обычный клик - нужно только добавить статическую переменную в OnChartEvent. Посмотрите пример в https://www.mql5.com/ru/docs/constants/chartconstants/enum_chartevents и сделайте примерно так:
//+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // идентификатор события const long& lparam, // параметр события типа long const double& dparam, // параметр события типа double const string& sparam // параметр события типа string ) { //--- время последнего клика мышки static uint last_click=0; //--- нажатие левой кнопкой мышки на графике if(id==CHARTEVENT_CLICK) { uint click_time=GetTickCount(); Print("Координаты щелчка мышки на графике: x = ",lparam," y = ",dparam); if(click_time-last_click<dbl_click_time) { Print("DoubleClick!"); // какие-то еще действия } last_click=click_time; } //--- нажатие мышкой на графическом объекте if(id==CHARTEVENT_OBJECT_CLICK) { Print("Нажатие кнопки мышки на объекте с именем '"+sparam+"'"); } //--- нажатие кнопки на клавиатуре if(id==CHARTEVENT_KEYDOWN) { switch(lparam) { case KEY_NUMLOCK_LEFT: Print("Нажата KEY_NUMLOCK_LEFT"); break; case KEY_LEFT: Print("Нажата KEY_LEFT"); break; case KEY_NUMLOCK_UP: Print("Нажата KEY_NUMLOCK_UP"); break; case KEY_UP: Print("Нажата KEY_UP"); break; case KEY_NUMLOCK_RIGHT: Print("Нажата KEY_NUMLOCK_RIGHT"); break; case KEY_RIGHT: Print("Нажата KEY_RIGHT"); break; case KEY_NUMLOCK_DOWN: Print("Нажата KEY_NUMLOCK_DOWN"); break; case KEY_DOWN: Print("Нажата KEY_DOWN"); break; case KEY_NUMPAD_5: Print("Нажата KEY_NUMPAD_5"); break; case KEY_NUMLOCK_5: Print("Нажата KEY_NUMLOCK_5"); break; default: Print("Нажата какая-то неперечисленная клавиша"); } ChartRedraw(); ...... }

- www.mql5.com
да статья полезная, но не могу понять как обработать событие ON_DBL_CLICK, можете помочь?
Ну если пытаться всё делать по феншую, то событие ON_DBL_CLICK словить невозможно. Простая проверка: запускаю любой пример панели из раздела Панели и диалоги, в CWnd::OnMouseUp ставлю точку останова на:
и как итог - хоть клик, хоть двойной клик производить на панели, курсор не заходит на точку останова. Бяда.
Ну если пытаться всё делать по феншую, то событие ON_DBL_CLICK словить невозможно. Простая проверка: запускаю любой пример панели из раздела Панели и диалоги, в CWnd::OnMouseUp ставлю точку останова на:
и как итог - хоть клик, хоть двойной клик производить на панели, курсор не заходит на точку останова. Бяда.
Решение показал в другой ветке https://www.mql5.com/ru/forum/239867#comment_7224345

- 2018.04.23
- www.mql5.com
Привет!
В примерах:
1. Размещаем Панель на графике финансового инструмента.
2. Переходим на график произвольного финансового инструмента, открытого в другом окне.
3. Возвращаемся в окно графика с Панелью.
4. Панель находится в левом верхнем углу графика в свёрнутом состоянии.
Как сделать так, чтобы Панель не сворачивалась при возврате в окно графика, в котором она размещена?
Понятно, что необходимо обрабатывать события, но что-то запутался :) ...
За ранее спасибо за пояснения.
А панель на mql4 можно создать?
Попробуйте коды из статьи - должны работать.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Как создать графическую панель любой сложности и как это работает:
В статье подробно рассматривается, как создать панель на базе класса CAppDialog и как добавить в нее элементы управления. Описывается структура панели и схема наследования объектов в ней. Продемонстрировано, что нужно для обработки событий и как события раздаются подчинённым элементам управления. Приведены примеры изменения параметров панели: размера, цвета фона.
Порядок создания и наложения объектов из раздела Панели и диалоги Стандартной библиотеки выглядит следующим образом. Сначала создается объект "Border", в его границах добавляется фон панели в виде объекта "Back", на фон накладывается клиентская область "ClientBack", внутри которой могут находится дочерние контролы. В верхнюю часть панели добавляются объект "Caption" с названием панели и две кнопки для управления.
Автор: Vladimir Karputov