Создание ресурса на основе файла
boolResourceCreate(
conststring resource_name, // имя ресурсаconststring path // относительный путь к файлу
);
и
Удаляет динамически созданный ресурс (освобождает занятую ресурсом память).
boolResourceFree(
conststring resource_name // имя ресурса
);
замечена некорректная работа объектов созданных на основе класса CPicture. При удалении динамически созданного ресурса объект на основе класса теряет картинку и отображает только рамку рисунка (оконтовку).
Хотя в справке обозначено:
Функция ResourceFree() позволяет разработчику
mql5-программы управлять потреблением памяти при активной работе с ресурсами. Графические объекты, привязанные к
удаляемому из памяти ресурсу, будут отображаться правильно и после его удаления.
Может кто уже с таким сталкивался? Пример будет позже.
Из обработанного массива создается ресурс res_bmp_invert.
Ресурс res_bmp_invert назначается в качестве картинки объекту picture.
Удаляем созданные ресурсы и картинка из объекта picture ИСЕЗАЕТ!
Хотя в справке обозначено:
Функция ResourceFree() позволяет разработчику mql5-программы управлять потреблением памяти при активной работе с ресурсами. Графические объекты, привязанные к удаляемому из памяти ресурсу, будут отображаться правильно и после его удаления.
Оказывается неправильная работа с ресурсом, который был удален, наблюдается только в классе CPicture. Класс CBmpButton с удаленным ресурсом работает корректно.
Для демонстрации изменил эксперта: теперь в эксперте создаётся один объект на базе класса CPicture (рисунок для него dollar.bmp) и второй объект на базе класса CBmpButton (рисунок для него euro.bmp).
Точно. Для каждого пункта меню CMenuItem будет генерироваться пользовательское событие. На основе примера MQL5\Experts\Examples\Controls\ControlsDialog.mqh:
Точно. Для каждого пункта меню CMenuItem будет генерироваться пользовательское событие. На основе примера MQL5\Experts\Examples\Controls\ControlsDialog.mqh:
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Накидал примерную схему класса Cmenu.
menu bar - список верхнего уровня. menu bar будет отображаться всегда в приложении. menu bar аналог:
. menu bar производный от класса CArrayObj.
menu item - пункт меню. Может быть быть просто пунктом меню или выпадающим меню.
PopUpMenu - выпадающее меню. Может содержать несколько menu item. PopUpMenu производный от класса /*edited*/ CWndObj (/*original*/ CArrayObj)
При работе с ресурсами
и
замечена некорректная работа объектов созданных на основе класса CPicture. При удалении динамически созданного ресурса объект на основе класса теряет картинку и отображает только рамку рисунка (оконтовку).
Хотя в справке обозначено:
Функция ResourceFree() позволяет разработчику mql5-программы управлять потреблением памяти при активной работе с ресурсами. Графические объекты, привязанные к удаляемому из памяти ресурсу, будут отображаться правильно и после его удаления.
Может кто уже с таким сталкивался? Пример будет позже.
Прикрепил эксперта. Схема работы:
Хотя в справке обозначено:
Функция ResourceFree() позволяет разработчику mql5-программы управлять потреблением памяти при активной работе с ресурсами. Графические объекты, привязанные к удаляемому из памяти ресурсу, будут отображаться правильно и после его удаления.
Оказывается неправильная работа с ресурсом, который был удален, наблюдается только в классе CPicture. Класс CBmpButton с удаленным ресурсом работает корректно.
Для демонстрации изменил эксперта: теперь в эксперте создаётся один объект на базе класса CPicture (рисунок для него dollar.bmp) и второй объект на базе класса CBmpButton (рисунок для него euro.bmp).
Уточняю схему для меню.
CmenuBar - список меню верхнего уровня. CMenuPopUp - выпадающее меню. CMenuItem - пункт меню. Разделитель - реализации пока нет.
Декларация
Заголовок
#include <Menu\Menu.mqh>Для примера схема на основании меню Вид терминала MetaTrader5. Обновлённая схема:
Уточняю схему для меню.
CmenuBar - список меню верхнего уровня. CMenuPopUp - выпадающее меню. CMenuItem - пункт меню. Разделитель - реализации пока нет.
Декларация
Заголовок
Для примера схема на основании меню Вид терминала MetaTrader5. Обновлённая схема:
Дык, а какже колбэки?
Ну отрисовать-то можно, но функционал как-то надо весить?
Я, например, в МТ4 встраиваю менюху и в попапы... где-то так:
Все в Winapi, коллбэки там же...
Дык, а какже колбэки?
Ну отрисовать-то можно, но функционал как-то надо весить?
Через кастомные события.
В реализации на mql есть свои преимущества - код подойдет для маркета.
Через кастомные события.
...
Точно. Для каждого пункта меню CMenuItem будет генерироваться пользовательское событие. На основе примера MQL5\Experts\Examples\Controls\ControlsDialog.mqh:
Точно. Для каждого пункта меню CMenuItem будет генерироваться пользовательское событие. На основе примера MQL5\Experts\Examples\Controls\ControlsDialog.mqh:
Круто будет! Поддерживаю задумку