我的方法。核心是引擎。 - 页 7

 
安排属性、对象和元素的最好方法是创建一个表格

元素的核心是表格。

我们已经创建了一个原核模型,旨在存储一个特定元素的初始对象参数。

接下来,我们必须创建一个主内核,并在其中写入我们需要的元素。

然后,我们将为主内核内的每个元素设置新的值。

之后,我们将创建元素。

然后我们将在不同的活动中与他们合作。


 

申报主核心。

int G_CORE[All_objects][All_properties];

核心区的每一行将占据一个对象。

我们必须确定核心区总共会有多少个物体。要做到这一点,我们必须计算出我们要创建的项目的数量,以及每个项目中的对象的数量。

比方说,我们有10个按钮。所以:10个元素*3个对象=30个对象。所以有30行。

#define  All_objects     30
#define  All_properties  10

我们增加了主核心的属性数量,因为除了基本参数外,我们还需要元素和对象的名称、它们之间的绑定以及其他一些属性。


我们重新声明了对象的属性

#define  NAME        0
#define  TYPE        1
#define  ELEMENT     2

#define  X           3
#define  X_SIZE      4
#define  Y           5
#define  Y_SIZE      6
#define  BG_COLOR    7
#define  TEXT_COLOR  7
#define  TEXT        8
#define  CORNER      9
#define  STATE       10
//-------------------

TEXT属性将包含对另一个数组的引用,该数组将包含按钮文本。

需要ELEMENT属性来链接核心内同一元素的对象(避免混淆哪个对象属于哪个元素)。在这个属性中,我们将设置元素的序列号。

 
Реter Konow: //这是对元素属性的调用,看起来像这样。

很容易混淆基地、文本和图标。在描述中很清楚这个或那个索引里面有什么。在真正的编程中,你必须把它全部记在脑子里。我知道彼得是一个记忆力很强的巨人,遗忘能力急剧下降。但我担心这样的巨头并不多。我已经忘记了第二天要放什么地方和什么东西了。

大致如下不是更好吗(我会这样做)。

声明我们需要的基本结构。

struct SPosition
{
uint m_uiX;
uint m_uiY;
};

struct SElementSize
{
uint m_uiXSize;
uint m_uiYSize;
};

现在我们可以从公共对象中获得基础、文本和图标接口。

CBaseI* pbBase = core.GetBase();
CTextI* ptText = core.GetText();
CIconI* pbIcon = core.GetIcon();

而这三个接口中的任何一个--设置相关属性。嗯,比如说,文字。

ptText.SetPosition(SPosition& rpPos);

我们填充位置结构(X和Y),从核心部分调用文本接口,并从这个接口中用我们的结构调用 位置设置函数。这些接口中的每一个都有设置大小和颜色的功能。从一个普通的纯虚拟接口继承它们是有意义的,所有的函数都被设置为零。

在这里,要把事情混起来就更难了。因为在任何时候,你只能接触到你的工作所需要的东西。而对于其他东西,你必须调用它,如果你不允许这样做,那么通过适当的系统设计,你甚至不能调用这个 "被禁止的 "接口,从而保护自己不犯错误。

 

因此,让我们首先改变原型内核属性的数量,它们与主内核中的相同。接下来让我们做一个构建G_CORE的循环。

int P_CORE[3][10] = {
//Основание кнопки.-----------------------------
//
//NAME     TYPE   ELEMENT     X    Y     X_SIZE  Y_SIZE       COLOR 
//----------------------------------------------
{ 100001,  base,  button,    100, 100,    200,    50,    C'245,245,245'},
//---------------------------------------------- 
//Текст кнопки.---------------------------------
//
//NAME    TYPE   ELEMENT   X    Y     X_SIZE  Y_SIZE       COLOR 
//----------------------------------------------
{100002,  text,  button,  120, 120,     0,      0,       C'245,0,0'},
//---------------------------------------------- 
//Иконка кнопки.-------------------------------- 
//
//NAME    TYPE     ELEMENT   X    Y     X_SIZE  Y_SIZE       COLOR 
{100003,  icon,    button,  140, 140,     16,     16,           0},
//---------------------------------------------- 
};
//Далее, строим G_CORE:
//--------------------------------------
int q = 0;
//--------------
for(int a1 = 0; a1 < All_objects; a1++)
  {
   for(int a2 = 0; a2 < All_properties; a2++)
    {
     G_CORE[a1][a2] = P_CORE[q][a2];
    }
     q++;
     if(q == 3)q = 0;    
  }


在这个周期之后,G_CORE核心将被10个按钮的原型所填充。接下来,我们的任务是给元素起唯一的名字,并将对象 与它们的元素绑定,给每个元素一个唯一的索引。

 
Реter Konow:

因此,让我们首先改变原型内核属性的数量,它们与主内核中的相同。然后让我们做一个循环来建立G_CORE。

你可以从这个代码中完美地看到它。

我已经忘记了a1代表什么,a2代表什么。

但这是一半的麻烦--如果我忘记了,我将不得不看上面。但我可以确定我没有忘记,我还可以把元素弄混。 然后,如果马上就会有结果,那是一件好事。否则,它根本就不是一个事实,而且错误可能会在更晚的时候发生,而且它将根据坏运气的规律,在最脆弱的地方,在最不合适的时刻影响。

彼得的做法是背诵的泰斗,这也很正常。但有多少参与者是这样的巨头?

 

与此同时,甚至有些 一家小公司公开了他们蹩脚的图形用户界面的代码。 :-)

他们真的在走弯路......他们害怕竞争!!。

笑话,笑话,但任何有兴趣的人都可以看到Windows GUI是如何从内部构建的。

WPF是一个用于构建Windows桌面应用程序的.NET核心UI框架。:https://github.com/dotnet/wpf

Windows Forms是一个用于构建Windows桌面应用程序的.NET Core UI框架:https://github.com/dotnet/winforms

向后兼容的Windows UI功能版本,包括UWP XAML控件,以及Fluent样式和材料:https://github.com/Microsoft/microsoft-ui-xaml


 
Maxim Kuznetsov:

与此同时,甚至有些 一家小公司开放了其俗气的图形用户界面的代码。 :-

GUI不是这里的问题。我的方法可以推而广之,适用于任何目的。包括人工智能。

接下来,我将向你展示如何做到这一点。

 
乔治,请让我继续。我知道你更喜欢OOP,那样你会更舒服。但是,你的决定是根据程序员的资历来计算的。我现在正在寻找一种方法,通过它可以实现最大的发展。方便是第二位的。
 
Реter Konow:

我们必须确定有多少物体会在核心中。要做到这一点,我们必须计算出我们想要创建的项目的数量,以及每个项目中的对象的数量。

#define  All_objects     30
#define  All_properties  10

观众提问。

让我们假设,我们创建了一个交易专家顾问的交易表。每一行--一个交易,包括进入、退出价格、成交量等。在我们编译之前,如何提前知道专家顾问将执行的交易数量,以正确确定表格中的行数?

 
Vasiliy Sokolov:

观众提问。

假设我们创建一个交易专家顾问的交易表。每一行都是一个交易,包括进场、出场价格、成交量等。我怎样才能在编译之前提前知道专家顾问将进行的交易数量,以便正确确定表格中的行数?

在每个交易上使用ArrayResize向数组添加一个数字,并将交易的属性记录到其中。

同时,这些财产将被提前分配到各单元中。

之后,所有的数据将被订购。