🎛️
自定义图形控件(一):在 MQL5 中造可复用控件
GUI图形控件面向对象MQL5面板
MQL5 的图形对象全家桶
MT5 提供四十多种图形对象:按钮、文本标签、编辑字段、位图标签,以及椭圆、斐波那契扇形等分析工具。它们可单独用,更常见是相互连接成对象链(如编辑字段常配位图标签说明用途)。
为什么要自定义控件
编辑字段要校验输入、支持句点逗号作小数分隔符;数据输出要格式化去多余零。把这些行为打包成单一对象,比每次重复写逻辑简单得多。MQL5 是面向对象语言,无需官方控件设计器也能手写。
CGraphicObjectShell:控件的公共外壳
所有控件继承自 CGraphicObjectShell,它封装位置、尺寸、显示/隐藏、刷新等公共行为。SetPos/SetWidth/SetHeght/Left/Top/Event 是统一接口。
class CGraphicObjectShell
{
public:
void Init(int parent);
void SetPosLeft(int x); void SetPosTop(int y);
void SetPos(int x,int y);
int Width(), Height(), Left(), Top();
void Refresh(), Show(), Hide();
int Event();
};
常见标准控件的映射
MQL5 中按钮(OBJ_BUTTON)、编辑字段(OBJ_EDIT)、标签(OBJ_LABEL)与其他语言类似。把它们各自封装成类,再组合成窗体(Form)、框架(Frame)分组,就是一套迷你 GUI 库。
- 按钮:触发交易/刷新动作。
- 编辑字段:输入手数、止损点数,需做输入校验。
- 标签/位图标签:显示状态与说明。
- 复选框/单选/滚动条:多选项与范围选择。
✦ 先造外壳再填控件
把坐标/尺寸/显示等公共逻辑抽进 CGraphicObjectShell,后续每个具体控件只写差异部分,维护成本骤降。
小结
MQL5 手写 GUI 的核心是“外壳基类 + 具体控件类”。把图形对象封装成可复用控件,就能拼出功能完整、体验接近原生应用的交易面板。下篇讲控件库扩充。
常见问题
没有官方设计器,但 MQL5 是面向对象语言,足以手写把图形对象封装成可复用控件类。
抽离坐标/尺寸/显示/刷新等公共逻辑,具体控件只写差异部分,维护成本骤降。
按钮(触发动作)、编辑字段(输入手数/止损)、标签(显示状态)、复选框/单选/滚动条(选项与范围)。