用 MQL 编写的用户界面图库 - 页 15 1...8910111213141516171819202122...82 新评论 Реter Konow 2024.06.08 18:43 #141 Nikolai Semko #:Pyotr 我不明白你的意思。 你没有回答我的问题。 对于程序员来说,知道如何在工作时与图形用户界面交互是很重要的。 下面是我的图形用户界面的一个例子。我点击了明暗主题快捷键,这个事件立即触发了改变背景颜色和线条的功能。如何进行这种交互? 用户不会与我的代码进行(任何) 交互 "是什么意思? 程序员需要交互的不是代码,而是代码应该产生的事件 。 很好。为了清楚起见,我尽量只用图片。 1. 2. 3. 4. 我们的选项表、窗口中的复选框以及 Internal_API 文件: 5.在用户代码中对窗口和项目执行操作: 6. intellisense 会告诉我们一切!!!..! Nikolai Semko 2024.06.08 18:46 #142 好的。 我试着问一个不同的问题,以网络开发为例,因为您的图形用户界面是使用您创建的标记语言编写的,网络开发也有自己的标记语言(HTML)和样式语言(CSS)。 网络开发也有自己的标记语言(HTML)和样式语言(CSS)。 如果你只用 HTML 创建了一个网站,你可以用纯 HTML 创建控件。 下面是一个带有复选框的示例。 但在这种情况下,网站将是死的,因为当控件工作时不会发生任何事情。 为了使事情发生,您需要使用 JavaScript 和 addEventListener 函数为每个事件添加一个处理程序。下面是这样一个处理程序的示例: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 我的主要问题可以换成:当用户工作时,您如何为程序员 实现图形用户界面生成的事件处理程序。正如我所说,我是这样实现的 :当图形用户界面以编程方式生成时,每个控件都会使用指向函数的指针 分配自己的事件处理函数。 Реter Konow 2024.06.08 18:47 #143 在从元素获取值的图片中,我忘了写入值的变量。对不起,我很久没有编程了。)))))) Реter Konow 2024.06.08 18:49 #144 Nikolai Semko #: 好的。我试着问一个不同的问题,以网络开发为例,因为您的图形用户界面是使用您创建的标记语言编写的,网络开发也有自己的标记语言(HTML)和样式语言(CSS)。网络开发也有自己的标记语言(HTML)和样式语言(CSS)。 如果你只用 HTML 创建了一个网站,你可以用纯 HTML 创建控件。下面是一个带有复选框的 示例。 但在这种情况下,网站将是死的,因为当控件工作时不会发生任何事情。 为了使事情发生,您需要使用 JavaScript 和 addEventListener 函数为每个事件添加一个处理程序。下面是这样一个处理程序的示例: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 我的主要问题可以换成:当用户工作时,您如何为程序员 实现图形用户界面生成的事件处理程序。正如我所说,我是这样实现的 :当图形用户界面以编程方式生成时,每个控件都会使用指向该函数的指针 分配自己的事件处理函数。 尼古拉斯,一切正常。你以后可以自己试试。一切都比你想象的要简单得多。我已经用这项技术制作了许多可用的界面。所以...你很快就会知道了 Nikolai Semko 2024.06.08 19:14 #145 Реter Konow #:尼古拉,成功了待会儿你自己试试这比你想象的要简单得多。我已经用这项技术制作了很多工作界面所以...你很快就会知道了 好的 我会等着的 Okay.我会等着的。不过,为了举例说明更容易理解,请创建一个简单的空指标(或智能交易系统),在其中以单独按钮的形式连接图形用户界面,当您按下按钮时,窗口的背景颜色会从黑色变为白色,又从白色变为黑色。只希望颜色变化发生在指标本体中,而不是连接的某个文件中。 以下是按下按钮后在程序体中执行的函数代码,以方便编写: void ChangeColorScheme() { struct ColorScheme { uint background; uint foreground; uint grid; uint bar; uint bull; uint bear; uint volume; }; static const ColorScheme c[2] = {{0x00000000,0x00DDAAAA,0x00804040,0x0000FF00,0x00000000,0x00FFFFFF,0x0032CD32}, {0x00FFFFFF,0x00000000,0x00C0C0C0,0x00000000,0x00FFFFFF,0x00000000,0x00008000} }; static int clr_scheme = 0; if (clr_scheme == 1) clr_scheme = 0; else clr_scheme = 1; ChartSetInteger(0,CHART_COLOR_BACKGROUND,c[clr_scheme].background); ChartSetInteger(0,CHART_COLOR_FOREGROUND,c[clr_scheme].foreground); ChartSetInteger(0,CHART_COLOR_CHART_LINE,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CHART_DOWN,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CHART_UP,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,c[clr_scheme].bull); ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,c[clr_scheme].bear); ChartSetInteger(0,CHART_COLOR_GRID,c[clr_scheme].grid); ChartSetInteger(0,CHART_COLOR_VOLUME,c[clr_scheme].volume); ChartRedraw(); } Реter Konow 2024.06.08 19:22 #146 Nikolai Semko #:好吧 我等着 Okay.我等着。不过,为了举例说明更容易理解,请创建一个简单的空指标(或智能交易系统),在其中以单独按钮的形式连接图形用户界面,当您按下按钮时,窗口的背景颜色会从黑色变为白色,又从白色变为黑色。只希望颜色变化发生在指标本体中,而不是连接的某个文件中。 以下是按下按钮后在程序体中执行的函数代码,以方便编写: 好的。为了便于理解,我将采用最简单的实现方式。无修饰)。 指示器 指标内部有一个用户窗口 窗口中有一个按钮 按钮调用您的函数。 所有操作都写在指示器的正文中。 Nikolai Semko 2024.06.08 19:25 #147 Реter Konow #:好的。为了便于理解,我会尽可能简单地实现。不加修饰)。 指示器 指标内部是一个用户窗口 窗口中有一个按钮 按钮调用您的函数。 所有操作都写在指示器主体中。 很好!谢谢。 Реter Konow 2024.06.08 20:10 #148 Nikolay,我无法在指示器主体中编写函数调用,因为其处理程序位于 Internal_API.mqh 文件中。 也就是说,我可以通过该文件中的处理程序在按下按钮时调用您的函数。不过,我也可以在计时器事件中通过编程从指示器主体设置按钮状态。但这样我就不需要按下按钮了。总之,有不同的元素。其中一些可以在指示器主体内部处理(主要是非交互式元素,例如进度条),还有一些在文件Internal_API.mqh 中有处理程序,并在那里工作。尽管它们的状态可以在 EA/指标体中通过编程设置。 您的任务已完成。(如果是白色方块 - 点击) 代码 //+------------------------------------------------------------------+ //| Indicators 1.mq5 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #include<GUI_DRIVE_2.mqh> #include<MyProject_1\CORES.mqh> #include<MyProject_1\Internal_API.mqh> //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create timer EventSetMillisecondTimer(25); //------------------------- D_OnInit(); //------------------------- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { //ВАШ КОД----------------- //ВАШ КОД----------------- //ВАШ КОД----------------- //ВАШ КОД----------------- //УСТАНОВИТЬ ВЫЗОВ В САМОМ НИЗУ, ПОД ПОЛЬЗ.КОДОМ.------------------ //--------------------------- RMSG(1); //--------------------------- } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //УСТАНОВИТЬ ВЫЗОВ НА САМОМ ВЕРХУ, НАД ПОЛЬЗ.КОДОМ.--------------- //---------------------------------------------------------------- D_OnChartEvent(id,lparam,dparam,sparam); //---------------------------------------------------------------- } //+------------------------------------------------------------------+ /*void ChangeColorScheme() { struct ColorScheme { uint background; uint foreground; uint grid; uint bar; uint bull; uint bear; uint volume; }; static const ColorScheme c[13] = {{0x00000000,0x00DDAAAA,0x00804040,0x0000FF00,0x00000000,0x00FFFFFF,0x0032CD32}, {0x00FFFFFF,0x00000000,0x00C0C0C0,0x00000000,0x00FFFFFF,0x00000000,0x00008000} }; static int clr_scheme = 0; if (clr_scheme == 1) clr_scheme = 0; else clr_scheme = 1; ChartSetInteger(0,CHART_COLOR_BACKGROUND,c[clr_scheme].background); ChartSetInteger(0,CHART_COLOR_FOREGROUND,c[clr_scheme].foreground); ChartSetInteger(0,CHART_COLOR_CHART_LINE,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CHART_DOWN,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CHART_UP,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,c[clr_scheme].bull); ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,c[clr_scheme].bear); ChartSetInteger(0,CHART_COLOR_GRID,c[clr_scheme].grid); ChartSetInteger(0,CHART_COLOR_VOLUME,c[clr_scheme].volume); ChartRedraw(); }*/ void ChangeColorScheme(uint _color) { ChartSetInteger(0,CHART_COLOR_BACKGROUND,_color); } 因为编译器在骂人,所以注释掉了你的函数。我把它简化了。 以下是 Internal_API.mqh 文件中的代码 Реter Konow 2024.06.08 20:24 #149 顺便说一下,您应该添加 Internal_API.mqh 文件包含控制 处理程序,专门用于连接它们。 该文件是为用户设计的,不属于引擎或我的任何其他代码。 Nikolai Semko 2024.06.08 21:05 #150 Реter Konow 控件 的处理程序,专门用于连接控件。 该文件是为用户设计的,不属于引擎或我的任何其他代码。 我明白了,彼得。 当然,这对开发人员来说并不方便。不过,带有函数指针的变体要好得多。 1...8910111213141516171819202122...82 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
Pyotr 我不明白你的意思。
你没有回答我的问题。 对于程序员来说,知道如何在工作时与图形用户界面交互是很重要的。 下面是我的图形用户界面的一个例子。我点击了明暗主题快捷键,这个事件立即触发了改变背景颜色和线条的功能。如何进行这种交互?
用户不会与我的代码进行(任何) 交互 "是什么意思? 程序员需要交互的不是代码,而是代码应该产生的事件 。
很好。为了清楚起见,我尽量只用图片。
1.
2.
3.
4.
我们的选项表、窗口中的复选框以及 Internal_API 文件:
5.在用户代码中对窗口和项目执行操作:
6.
intellisense 会告诉我们一切!!!..!
我试着问一个不同的问题,以网络开发为例,因为您的图形用户界面是使用您创建的标记语言编写的,网络开发也有自己的标记语言(HTML)和样式语言(CSS)。
网络开发也有自己的标记语言(HTML)和样式语言(CSS)。 如果你只用 HTML 创建了一个网站,你可以用纯 HTML 创建控件。
下面是一个带有复选框的示例。 但在这种情况下,网站将是死的,因为当控件工作时不会发生任何事情。 为了使事情发生,您需要使用 JavaScript 和 addEventListener 函数为每个事件添加一个处理程序。下面是这样一个处理程序的示例: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 我的主要问题可以换成:当用户工作时,您如何为程序员 实现图形用户界面生成的事件处理程序。正如我所说,我是这样实现的 :当图形用户界面以编程方式生成时,每个控件都会使用指向函数的指针 分配自己的事件处理函数。
好的。我试着问一个不同的问题,以网络开发为例,因为您的图形用户界面是使用您创建的标记语言编写的,网络开发也有自己的标记语言(HTML)和样式语言(CSS)。网络开发也有自己的标记语言(HTML)和样式语言(CSS)。 如果你只用 HTML 创建了一个网站,你可以用纯 HTML 创建控件。下面是一个带有复选框的
示例。 但在这种情况下,网站将是死的,因为当控件工作时不会发生任何事情。 为了使事情发生,您需要使用 JavaScript 和 addEventListener 函数为每个事件添加一个处理程序。下面是这样一个处理程序的示例: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 我的主要问题可以换成:当用户工作时,您如何为程序员 实现图形用户界面生成的事件处理程序。正如我所说,我是这样实现的 :当图形用户界面以编程方式生成时,每个控件都会使用指向该函数的指针 分配自己的事件处理函数。
尼古拉斯,一切正常。你以后可以自己试试。一切都比你想象的要简单得多。我已经用这项技术制作了许多可用的界面。所以...你很快就会知道了
尼古拉,成功了待会儿你自己试试这比你想象的要简单得多。我已经用这项技术制作了很多工作界面所以...你很快就会知道了
好的 我会等着的 Okay.我会等着的。不过,为了举例说明更容易理解,请创建一个简单的空指标(或智能交易系统),在其中以单独按钮的形式连接图形用户界面,当您按下按钮时,窗口的背景颜色会从黑色变为白色,又从白色变为黑色。只希望颜色变化发生在指标本体中,而不是连接的某个文件中。
以下是按下按钮后在程序体中执行的函数代码,以方便编写:
好吧 我等着 Okay.我等着。不过,为了举例说明更容易理解,请创建一个简单的空指标(或智能交易系统),在其中以单独按钮的形式连接图形用户界面,当您按下按钮时,窗口的背景颜色会从黑色变为白色,又从白色变为黑色。只希望颜色变化发生在指标本体中,而不是连接的某个文件中。
以下是按下按钮后在程序体中执行的函数代码,以方便编写:
好的。为了便于理解,我将采用最简单的实现方式。无修饰)。
好的。为了便于理解,我会尽可能简单地实现。不加修饰)。
很好!谢谢。
Nikolay,我无法在指示器主体中编写函数调用,因为其处理程序位于 Internal_API.mqh 文件中。
也就是说,我可以通过该文件中的处理程序在按下按钮时调用您的函数。不过,我也可以在计时器事件中通过编程从指示器主体设置按钮状态。但这样我就不需要按下按钮了。总之,有不同的元素。其中一些可以在指示器主体内部处理(主要是非交互式元素,例如进度条),还有一些在文件Internal_API.mqh 中有处理程序,并在那里工作。尽管它们的状态可以在 EA/指标体中通过编程设置。
您的任务已完成。(如果是白色方块 - 点击)
代码
因为编译器在骂人,所以注释掉了你的函数。我把它简化了。
以下是 Internal_API.mqh 文件中的代码
顺便说一下,您应该添加
Internal_API.mqh 文件包含控制 处理程序,专门用于连接它们。
该文件是为用户设计的,不属于引擎或我的任何其他代码。
该文件是为用户设计的,不属于引擎或我的任何其他代码。
我明白了,彼得。
当然,这对开发人员来说并不方便。不过,带有函数指针的变体要好得多。