错误、漏洞、问题 - 页 2169

 
Sergey Dzyublik:

如果我承诺找到旧代码的帖子被删除了,这意味着我没有承诺什么......
开个玩笑。


它是在那些黑暗的日子里(3年多以前)写的,当时键盘的功能还很小,说得不好听点就是不引人注目。
然而,如今,就记忆所及,有标准的功能来跟踪某个特定键的状态。
所以下面的代码片断不太可能有任何用处。

其中。
lparam - 当前事件中按下的键的代码。
last_key_code - 上一个事件中按下的键的代码。
g_first_key - 组合的第一个键的代码。
g_second_key - 组合中第二个键的代码。
time - 按键的当前事件的时间。
last_time_code - 上一个按键事件的时间。
g_time_limit - 第一次和第二次按键之间的最大时间,被认为是一个组合键。

当按下Ctrl时,我的处理程序不响应其他键,这一点是如何做到的?

是时候去这里了:https://www.mql5.com/ru/forum/231958

 
我不知道这个问题该怎么解决,但最近在打开或创建一个新文件时,Metaeditor挂得很紧,我不得不删除任务并重新开始,谁能遇到并知道该怎么做?
附加的文件:
err.png  132 kb
 
Andrii Djola:
我不知道该怎么解决这个问题,但最近在打开或创建一个新文件时,Metaeditor严重挂起,我不得不删除任务并重新开始,有谁能面对这个问题并知道该怎么做?

下午好!

你安装的是什么版本的终端和什么操作系统?

 
Evgeny Chernyshev:

下午好!

你安装的是什么版本的终端和什么操作系统?

Win 10 x64

2018年1月29日的MT5 build 1755

 
有什么办法可以单独编译所选的源文件(像以前一样)而不是项目
 

我是在锻炼身体还是应该这样 ?????

   double t   = 280/60;
   string rez = DoubleToString(t,16);
   Print (rez); //  2018.03.18 01:20:57.117	Test (EURUSD_i,H1)	4.0000000000000000

и

   double t   = (double)280/60;
   string rez = DoubleToString(t,16);
   Print (rez); // 2018.03.18 01:21:51.881	Test (EURUSD_i,H1)	4.6666666666666670
 
Vladimir Pastushak:

是我工作太辛苦还是应该这样 ?????

这是正确的(int除以int,int的结果是双倍)。

 double t   = 280/60;
 
Sergey Dzyublik:

这就对了(int除以int,int结果转换为双数)。

谢谢你!

 
 

我是否正确理解,帮助中的这个例子不起作用?

//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit() 
  { 
//--- включение сообщений о прокрутке колесика мышки 
   ChartSetInteger(0,CHART_EVENT_MOUSE_WHEEL,1); 
   return(INIT_SUCCEEDED); 
  } 
//+------------------------------------------------------------------+ 
//| ChartEvent function                                              | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) 
  { 
   if(id==CHARTEVENT_MOUSE_WHEEL) 
     { 
      //--- разберем состояние кнопок и колесика мышки для этого события  
      int flg_keys = (int)(lparam>>32);          // флаг состояний клавиш Ctrl, Shift и кнопок мышки 
      int x_cursor = (int)(short)lparam;         // X-координата, в которой произошло событие колесика мышки 
      int y_cursor = (int)(short)(lparam>>16);   // Y-координата, в которой произошло событие колесика мышки 
      int delta    = (int)dparam;                // суммарное значение прокрутки колесика, срабатывает при достижении +120 или -120 
      //--- обработаем флаг  
      string str_keys=""; 
      if((flg_keys&0x0001)!=0) str_keys+="LMOUSE "; 
      if((flg_keys&0x0002)!=0) str_keys+="RMOUSE "; 
      if((flg_keys&0x0004)!=0) str_keys+="SHIFT "; 
      if((flg_keys&0x0008)!=0) str_keys+="CTRL "; 
      if((flg_keys&0x0010)!=0) str_keys+="MMOUSE "; 
      if((flg_keys&0x0020)!=0) str_keys+="X1MOUSE "; 
      if((flg_keys&0x0040)!=0) str_keys+="X2MOUSE "; 
       
      if(str_keys!="") 
         str_keys=", keys='"+StringSubstr(str_keys,0,StringLen(str_keys)-1) + "'"; 
      PrintFormat("%s: X=%d, Y=%d, delta=%d%s",EnumToString(CHARTEVENT_MOUSE_WHEEL),x_cursor,y_cursor,delta,str_keys); 
     } 
  } 

除了ctrl和shift以及滚动之外,其他按钮都不能工作 .....