В Классы для создания панелей и диалогов нужно добавить класс для создания меню? - страница 4

 
Vinin:

Надо бы на сам объект глянуть 

CBmpButton bmpbutton;

Вот и весь объект. Даже еще не применял методы Set для назначения рисунков для режимов Off, On, Activ, Deactiv.к Минимум кода для проверки метода получения картинки режима Off: BmpOffName().


P.S. По идеи в принте должен получить строку с именем файла равной  NULL.

 

Также заметил невозможность получения остальных свойств имён файлов для режима OFF, ON, ACTIVE, PASSIVE:

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                              Copyright © 2014, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"

#include <Controls\BmpButton.mqh>;
CBmpButton bmpbutton;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Print(bmpbutton.BmpActiveName());
   Print(bmpbutton.BmpOffName());
   Print(bmpbutton.BmpOnName());
   Print(bmpbutton.BmpPassiveName());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

Аналогичная ошибка:

... ambiguous call to overloaded function with the same parameters ...

 

ИМХО, это косяк в стандартном классе. У них там эти же методы со значением параметра по умолчанию определены:

BmpActiveName(void)

BmpActiveName(const string name="")

Компилятор оказался умнее разработчика))

 
Dima_S:

ИМХО, это косяк в стандартном классе. У них там эти же методы со значением параметра по умолчанию определены:

Компилятор оказался умнее разработчика))

В сервисдеск уже сообщил. Хотел проверить - вдруг это я в стандартной библиотеке напакостил.
 
barabashkakvn:

Также заметил невозможность получения остальных свойств имён файлов для режима OFF, ON, ACTIVE, PASSIVE:

Аналогичная ошибка:

... ambiguous call to overloaded function with the same parameters ...

Источник проблемы найден: в Стандартной Библиотеке в классе CBmpButton в методах Set BmpOffName(), BmpOnName(), BmpPassiveName(), BmpActiveName() строку

const string name=""

следует заменить на

const string name

Таким образом класс CBmpButton должен выглядеть так:

public:
                     CBmpButton(void);
                    ~CBmpButton(void);
   //--- create
   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
   //--- parameters of the chart object
   int               Border(void)          const { return(m_border);                   }
   bool              Border(const int value);
   bool              BmpNames(const string off="",const string on="");
   string            BmpOffName(void)      const { return(m_bmp_off_name);             }
   bool              BmpOffName(const string name);
   string            BmpOnName(void)       const { return(m_bmp_on_name);              }
   bool              BmpOnName(const string name);
   string            BmpPassiveName(void)  const { return(m_bmp_passive_name);         }
   bool              BmpPassiveName(const string name);
   string            BmpActiveName(void)   const { return(m_bmp_active_name);          }
   bool              BmpActiveName(const string name);
   //--- state
 
barabashkakvn:

Источник проблемы найден: в Стандартной Библиотеке в классе CBmpButton в методах Set BmpOffName(), BmpOnName(), BmpPassiveName(), BmpActiveName() строку

следует заменить на

Таким образом класс CBmpButton должен выглядеть так:

Сервисдеск ответил - в ближайшем обновлении методы класса CBmpButton будут исправлены.
 
C-4:

Доля правды в словах Contender'а есть. Мне например нужна большая гибкость и в будущем понадобиться размещать сложные интерактивные объекты прямо в меню. Одного текста явно недостаточно. Поэтому если и браться за проектирование меню, то с тем прицелом, что бы оно было более гибким и способным размещать в себе больше чем просто текст.

Вообще проблема стандартной библиотеки именно в том, что она стандартная. Она хороша и подходит для подавляющего большинства задач, но когда нужно сделать что-то особенное приходится изобретать свой велосипед. Например у меня уже один такой велосипед есть:

 

Поэтому в моем лице эти новшества все равно не будут востребованы.

А что имелось ввиду под "... сложные интерактивные объекты..."? Из картинок mql5 позволяет только *.bmp, или имеется ввиду CCanvas?
 
Как дела с классами? Написалось что-нибудь?
 
Contender:
Как дела с классами? Написалось что-нибудь?
Есть общая схема, каким образом организовать меню, подменю. На базе каких элементов отрисовывать элементы меню. Нарисую схемку поаккуратнее и выложу. Хочется приблизиться к Windows API реализации в плане конструкции и функций.
 

Вот описание меню от Microsoft: http://msdn.microsoft.com/en-us/library/ms646977(v=vs.85).aspx

Причина обращения: