从头开始创建一个图形库

 
军刀
 

关于交易、自动交易系统和交易策略测试的论坛

众包的GUI。 公开测试。

Alexey Barbashin, 2020.03.07 21:25

"但也许在对象中做任何事情都更容易"--这比逻辑上更有意义。

"是的,当然,我们会部分地依靠它。"- 那么我们马上就会被纠正。

class CCoordPBase

Наследуемся от CObject, то есть:

class CCoordPBase : public CObject

Хотя наверное можно и по другому:

class Control : public CObject

CObject是开发者库中所有对象的基类。通过与C++和C#的类比而制成。夏普的基础对象(类型)是Object。

坐标和尺寸是控件的属性,还有边框的颜色、颜色和厚度、圆角的半径、图标和文本。

我们首先要定义什么样的控制是基本的,然后描述基本属性。

当然,以前定义的一些属性可能不会在子代中使用,这不是问题,但最好让基本的属性成为最通用的属性。

下面是一个简单的通用控制的例子。

包含背景、边框、半径、图标、文本

如果你需要一个Label,你不指定背景、边框和图标;如果你需要一个Panel,不指定内容;如果你需要一个图像按钮,只指定图标;如果你需要一个带图像的按钮,指定背景、边框和图像。

也就是说,这种构成对于大多数控制来说是相当普遍的。


我明白了,关于在保持坐标的情况下将鼠标悬停在它上面来改变风格的问题...虽然这已经很清楚了

是否有一个标准的biliotec控制?

 

CObject 的本质是对所有对象进行类型化

例如,我们需要一个列表库(项目列表、组合框、检查表等等)。对于每一种类型的元素,我们可以像Anatoly那样创建一个不同类型的数组,或者你可以使用一个现成的工具:CArrayObj

也就是说,许多代码不需要被发明,它们已经存在,只要拿去使用就可以了。

 
Alexandr Andreev:

我明白,问题是在保持坐标的同时改变悬停时的样式...虽然似乎已经很清楚

控件上有一个标准的bilio吗?

开发者的标准库 可以作为一个基础,我没有看到任何令人尴尬的地方,他们的等级制度。

当然,从那里我们应该扔掉与直接建设有关的一切,但留下转移事件的系统--它真的很普遍!"。

有了这项技术,即使是最复杂的控件也会属于哪个类,事件都会通过基本对象的类型化系统来传递。

基本控件将在底层的CControls中被绘制,之后将生成OnPaint()事件。这将允许用户重新绘制/重绘子控件,一般来说,允许用户以他们希望的方式重新绘制控件。

 
Alexandr Andreev:

来吧!!!!!

我正在考虑做一个简单的互动

我们将在这里输入位置,比如在行或列的情况下,在最后一个对象的左边。

所以我们要写一个通用的控制器

这正是应该做的:写出基本的互动。

在最开始的时候,一个基本的控制器不一定要有所有必要的属性,只要有一个背景就足够了。

毕竟,为了渲染控件本身,它将包含相应的函数。因此,在添加任何属性时,我们只需要修改一个函数。

根据元素的层次结构?

CObject是一个基本类型

class CControl : public CObject - 库本身的基础控制。

class CContainerControl : public CControl - 群组控制。它的一个字段将是一个嵌套控件的数组。你可以在CWndContainer标准库中 看到一个例子。

 
萨沙,既然你已经开始编码,就在MQL中做一个 开源项目。谁知道呢,也许会有一些。
 
Алексей Барбашин:
萨沙,既然你已经开始编码了,那就在MQL中做一个开源项目吧,你们可以一起开发,与其他人分享。谁知道呢,也许会有一些。

我现在正在等待...查看标准图书馆.... 有很多不必要的东西

我不知道是否有很多这样的人,但最好是自己写一个kontrol...或继承

CChartObject

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Алексей Барбашин:
萨沙,既然你已经开始编码,就在MQL中做一个开源项目。谁知道呢,也许会有一些。

我认为现在从头开始有点早,我们需要先建立起一些东西。

 
Alexandr Andreev:

我现在正在等待...查看标准图书馆.... 有很多不必要的东西

(虽然不多))但你最好写出你自己的控制...或者你可以继承它

CChartObject

不,不!!!。

密切关注!

这款控制器正是无处不在的方法!我们不需要离散的图表对象!我们需要在画布上作画--这是获得发展和更广泛可能性的唯一途径。

而事实上,你必须自己制作主控制器--这是肯定的。

标准库将属性和状态分割在CWndObject和CWnd之间,而我们需要将所有的东西统一在一个控件中。

 
Алексей Барбашин:

不,不!!!。

密切关注!

这个控制器是通向任何地方的途径!我们不需要离散的图表对象!我们需要在帆布上画画--这是唯一能给我们带来发展和广泛可能性的事情。

而事实上,你必须自己制作主控制器--这是肯定的。

标准库中的属性和状态被分割在CWndObject和CWnd之间,我们需要将所有的属性和状态统一在一个控件中。

我花了四分之一个小时试图创建一个项目,结果它被创建了,现在我正在研究如何让它公开。

 
Alexandr Andreev:

我认为现在就开始清算有点太早了。

我相信从头开始并不是一个好主意。

非常聪明的人花费了大量的时间和知识来制作同样的标准库Anatoly的库

人们花费了时间和知识,不利用它是愚蠢的。

从我们的角度来看,我们应该在两者中取其精华,建立一个新的。

我们需要从别人的错误中学习。我们将自己制作)。