文章 "向指标或者EA中快速添加控制面板" - 页 3

 
Karputov Vladimir:

以文章中的PanelDialog2.mqh 文件为例:

该文件创建了对话面板的元素。面板特质是CDialog 类。

谢谢!

我现在就用 CDialog 试试看,但我还是不明白它应该如何工作:按钮在创建后立即可见,它应该消失并跳转到 CDialog 吗?

 
Evgeny Potapov:

谢谢!

我会用 CDialog 试试,但我还是不明白它应该如何工作:按钮在创建后立即可见,它应该消失并跳转到 CDialog 吗?

使用带断点的逐步(F11)调试模式,所有隐藏的东西都会变为可见。
 
Evgeny Potapov:

谢谢!

我会用 CDialog 试试,但我还是不明白它应该如何工作:按钮在创建后立即可见,它应该消失并跳转到 CDialog 吗?

Karputov Vladimir:

关于文章中的PanelDialog2.mqh 文件示例:

该文件创建了对话面板的元素。面板的标志是CDialog 类。

可以使用该类,但由于某些原因,对话框无法用鼠标拖动。在这里:

int OnInit()  {
   MyButton = new CButton;
   if(CheckPointer(MyButton) == POINTER_INVALID) return(INIT_FAILED);
   MyDialog = new CDialog();
   if(CheckPointer(MyDialog) == POINTER_INVALID) return(INIT_FAILED);
   MyDialog.Create(ChartID(),WindowExpertName()+"_dailog",0,50,100,150,250);
   MyDialog.Add(MyButton);
   MyButton.Create(ChartID(),WindowExpertName()+"_button",0,70,120,90,190);
   MyDialog.Show();
   MyDialog.Enable();
   return(INIT_SUCCEEDED);
}
 
Vladimir Karputov:

您能告诉我如何在一段时间内(例如开仓或平仓 时)禁止处理所有事件或按钮点击吗?
 
Subscribers:
您能告诉我如何在一段时间内(例如,在开仓或平仓 时)禁止处理所有事件或按钮点击吗?
更具体一点?您对本文中的代码有疑问吗?
 
Vladimir Karputov:
更重要的是什么?您对本文中的代码有疑问吗?

不一定是这篇文章...我只是到处都找不到例如...文章中有一个按钮事件处理 订阅

EVENT_MAP_BEGIN(CControlsDialog)
...
ON_EVENT(ON_CLICK,m_button_ok,OnClickButtonOK)
EVENT_MAP_END(CAppDialog)

问题:如何以编程方式禁用此处理(禁用ON_CLICK 处理)并再次启用?

 
Subscribers:

根据这篇文章...我只是到处都找不到。例如...在文章中,有一个按钮事件处理 订阅

EVENT_MAP_BEGIN(CControlsDialog)
...
ON_EVENT(ON_CLICK,m_button_ok,OnClickButtonOK)
EVENT_MAP_END(CAppDialog)

问题:如何以编程方式禁用此处理(禁用ON_CLICK 处理)并再次启用?

没有办法禁止它,但可以在点击处理函数中编写一个标志检查 - 如果标志为 true,则处理点击;如果标志为 false,则退出函数。
 
Vladimir Karputov:
没有办法禁止它,但可以在点击处理函数中写一个标志检查 - 如果标志为 true,我们就处理点击;如果标志为 false,我们就退出函数。
我已经这么做了...但还是不一样...例如,当我按下面板上的按钮关闭许多订单时,我希望面板不完全响应,否则,如果我(此时)点击买入按钮,事件仍将发生,并且在关闭成功后,事件处理程序将有一个输入。
 
Vladimir Karputov:
没有办法禁止它,但可以在点击处理函数中编写一个标志检查 - 如果标志为 true,则处理点击;如果标志为 false,则退出函数。
一般来说,有没有办法使面板处于非活动状态?
 
Subscribers:
我已经做过了。不完全一样...例如,当我按下面板上的按钮平仓大量订单时,我希望面板不完全响应,否则如果我点击(此时)买入按钮,事件仍会发生,平仓触发后会有一个输入到事件处理程序。

做正确的事--进入函数后立即处理禁止标志。

虽然...只需一分钟....

已添加:

不,你只需要根据禁止标志来处理按压。