文章 "图形界面 I: 在MetaTrader 4终端中使用不同类型的程序来测试界面库 (第五章)"

 

新文章 图形界面 I: 在MetaTrader 4终端中使用不同类型的程序来测试界面库 (第五章)已发布:

本文是关于图形界面系列文章第一部分的续篇. 第一篇文章, 图形界面 I: 库结构的准备工作 (第一章) 详细考虑了这个库的目标. 在每一章的末尾, 都有第一部分文章的完整列表. 在那里您还可以下载当前开发阶段的库的完整版本. 文件在目录中的位置必须和在档案中相同.

在图形界面系列第一部分前面 一章中, 我们丰富了表单类的方法, 使得可以通过按下控件的方法管理表单. 之前所执行的测试都是使用"EA交易"类型的程序, 并且只在 MetaTrader 5终端中运行. 在本文中, 我们将使用不同类型的MQL程序, 例如指标和脚本程序, 来测试我们的成果. 因为这个函数库设计时就是跨平台的, 所以它应该可以被用于所有平台, 我们也将在MetaTrader 4中进行测试.

编译指标并把它载入到图表中. 结果应该如下图截屏所示. 和在EA交易中使用的时候一样, 表单可以被最小化, 最大化以及在图表中移动. 它的控件可以对光标移动做出回应, 如果按下了"关闭"按钮(右上角的叉), 指标将从图表上删除.

图 1. 在图表主窗口的指标中测试表单.

图 1. 在图表主窗口的指标中测试表单

请注意表单左上角的图标. 程序自动识别了程序的类型并设置了默认的图标. 您也许记得, 在开发CWindow 类的阶段, 是可以改变这个图标的.

不需要对代码做大的修改, 控件表单就可以用于指标. 然而, 如果我们试着在另外的窗口而不是主窗口中创建指标, 不是所有的功能都可以正常工作. 例如, (1) 表单的设置还是在主窗口中进行而不是在所要求的子窗口中, (2) 按下 "关闭" 按钮不能从图表上删除指标. 那是为什么呢?我们将看看如何改变这种情形.

实际上, 我们之前所做的都不需要做修改. 我们所要做的就是在CWndEvents 类中创建一个方法, 能够根据程序类型和指标所在的图表子窗口的编号来自动识别程序所在的窗口编号. 让我们把这个方法称为DetermineSubwindow(). 在这个方法的一开始必须检查程序是否是一个指标. 如果这不是指标, 就没有必要继续下去了, 因为所有MQL程序类型中, 只有指标是可以位于子窗口中的.

作者:Anatoli Kazharski

原因: