Для Вас, создать элементы управления на канвасе очень просто:
1. Вынимаете несколько рисующих функций из класса канвас, а именно: вертикальная линия, гор.линия. прямоугольник, залитый прямоугольник, текст.
2. Для рисования каждого элемента пишите функцию: void Button(), void Checkbox()... и т.д.
3. В Функции рисования элементов включаете наборы вызовов рисующих функций (линии, прямоуг.), которыми "начертите" на нужном канвасе структуру нужного элемента управления.
4. Экземпляр каждого созданного элемента должен быть привязан к своему окну.
5. Свойства каждого созданного экземпляра (тек. Х, Y, X_SIZE, Y_SIZE...) должны сохрянятся в массиве или структуре, чтобы другие функции могли их читать/менять.
Создать окно не менее просто чем остальные элементы:
1. Окно имеет простые базовые свойства нескольких обычных прямоугольников, которые последовательно рисуются на созданном канвасе вызовами функции FilledRectangle() (из класса CCanvas) и передачей в них шаблонных или польз.значений.
2. Окно рисуется до его элементов. За это отвечает спец.функция рисования окна Draw_window(x, y, w, h); например, что вызовет FilledRectangle() нужное кол-во раз, для построит конструкцию окна.
3. Затем, вызываются функции рисующие элементы управления. Каждый строится подобно окну - из последовательно рисуемых прямоугольников и рамок.
4. Свойства каждого экземпляра каждого создающегося вызовом функции элемента, записываются в любой вариант доступной для остальных функций памяти, среди которых:
Функция, ловящая событие нахождения курсора над координатами рисованного элемента, что на каждом событии перемещения курсора делает цикл по координатам всех рисованных и явленных элементов в этом окне и находит тот, что прямо под ним.
Функция, фиксирующая событие нажатия/отжатия на элемент под курсором и переключающая его состояние (если он интерактивен) вызовом другой функции, меняющей значения параметров того элемента (цвет, иконка...) и перерисовывающая его заново.
Для HFT, 3D думаю будет полезно при создании графического анализа объемов стакана и потока ордеров. Но как интерпретировать такую информацию, не вникал.
Существует несколько категорий элементов управления, среди которых можно выделить две основные:
1. Декоративные - линии, рамки, прямоугольники, иконки...
2. "Параметрические" - т.е. обладающие параметром.
Второй тип представляется двумя подкатегориями:
1. Элементы ввода - обеспечивают возможность менять значение графическими "механизмами" разработанными под разные типы параметров. Эти элементы делятся на несколько групп, например логическое состояние true/false (bool) устанавливает кнопка, чекбокс и радио-кнопка, а значение параметра с границами диапазона и шагом управляется слайдером или полем ввода. На каждый тип параметра имеется несколько однотипных элементов позволяющих похожим образом менять его значение.
2. Элементы вывода - транслируют значение в числовом, текстовом или в другом, графически преобразованном виде. Среди них: ячейки таблиц, текстовые метки, прогресс бары. Индикаторы и графики также относятся к этой категории, а их отличие в лишь приспособленности к большим обьемам выводимых данных.
Как я говорил ранее, рисовать элементы - простое и незамысловатое дело. По сути, это лишь разметка массива значениями. Все функции имеются в классе CCanvas - линии, прямоугольники, рамки. Функциям нужно только передать массив, который потом сохранить в ресурсе и подключить к обьекту BITMAP_LABEL с помощью свойства OBJPROP_BMPFILE.
Обертка этого класса мешает, как собаке пятая нога. (Наверное, потому никто не сделал до сих пор библиотеки на канвасе, т.к. сверху сказали: "на корове ездить только с седлом!". ;)).
А если нужны другие объекты, которые могут быть под объектом, который нарисован на главном фоне?
Дайте пример. Есть много разных ситуаций с различными решениями.
В моей ситуации, скорее всего, канваса достаточно, думаю, что так и сделаю как вы посоветовали.
Тем более, что уже есть минимальная поддержка канвасаДля HFT, 3D думаю будет полезно при создании графического анализа объемов стакана и потока ордеров.
Но как интерпретировать такую информацию, не вникал.
где такое есть ?