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 按钮被按下。