8.5 MessageBox ( )函数

8.5 MessageBox ( )函数


到目前为止,在这本书中,我们已使用内建Alert ( )函数来显示错误信息。若你想自制警告对话框,或应用户要求输入数据该怎么做呢? MeaaageBox ( )函数允许你使用Windows API 函数创造一个自制"跳出"对话框。

要使用MessageBox ( )函数,我们首先需#include 和MetaTrader 一起安装的WinUser32. mqh 档案。这个档案从Windows user 32. dll 档案汇入函数,并定义MessageBox( )函数工作所需的常数,以下是MessageBox ( )函数的语法:

要使用MessageBox ( )函数,我们需设定在跳出窗口对话框出现Text ,在标题带出现Title 。我们也必须明确定义Flags ,以推论哪些按钮和图标应出现于我们的跳出窗口。若无旗标被明确定义,则默认按钮为OK 。旗标需使用直标( )字符分开。

下面是一个有Yes/No 按钮和问号图示的信息框的范例:

旗标MB_YESNO 明确定义了Yes/ No 按钮将出现在讯息框内,而MB_ICONQUESTION 旗标则在对话框中放置了问号图示。整数变量YesNoBox 保有MessageBox ( )函数的回传值,可以知道哪个按钮被按下。

若Yes 按钮被按下, YesNoBox 的值将是IDYES , 一个订单将被开启。若No 按钮被按下,回传旗标将是IDNO ,你可使用MessageBox ( )的回传值作为输入,以决定一系列活动,诸如开启一张订单。

接着要谈的是在信息框中所使用的部分旗标名目。要见完整内容,请见MQL参照标题Standard Constants - MessageBox 。

8.5.1 按钮旗标

这些旗标明确定义哪一个按钮出现在你的信息框内。

• MB_OKCANCEL一一OK 和Cancel 按钮。

• MB_YESNO一一Yes 和No 按钮。

• MB一YESNOCANCEL一一Yes , No 和Cancel 按钮。

8.5.2 图示旗标

这些旗标明确定义了出现在信息框文字旁边的图标。

• MB_ICONSTOP一一停止标示图示。

• MB_ICONQUESTION一一问号图示。

• MB_ICONEXCLAMAηON一一惊叹号图示。

• MB_ICONINFORMATION一一信息图标。

8.5.3 回传旗标

这些旗标保有MessageBox( )的回传值,从而得知哪个按钮被按下。

• IDOK一一OK 按钮被按下。

• IDCANCEL一一Cancel 按钮被按下。

• IDYES一一Yes 按钮被按下。

• IDNO一一No 按钮被按下。