文章 "图形界面 X: 简单快速开发库的更新 (版本 2)" - 页 4

 

http://prntscr.com/tmjkm3


你好。我在使用 MT4,所以很不幸,我使用的是 MT4 的最后一个版本。这里有一个无论我怎么尝试都无法自行修复的错误。如上图所示,标题 "附近 "有一条水平线。如果该水平线被选中,点击标题内侧,它就会跳到标题中间,并开始随标题移动。此外,如果窗口背景中的某处有一条水平线被选中,在靠近该水平线时单击并在窗口内拖动,它就会开始拖动该水平线。这种情况会发生在图表上的所有对象上,而不仅仅是线条,只有当它们被选中时才会发生。


换句话说,面板和标题没有 "捕获 "鼠标事件并让它传递给下面的对象。如何解决这个问题?

谁能帮帮我?

Screenshot
Screenshot
  • prnt.sc
Captured with Lightshot
 

你好,
我知道这篇文章是 mql4 EasyAndFastGUI 的最新更新?
请告诉我如何修复 "expresion not boolen "警告。


 
Nauris Zukas #:

你好,
我知道这篇文章是 mql4 EasyAndFastGUI 的最新更新?
请告诉我如何修复 "expresion not boolen "警告。


m_show_flags 是什么类型?如果不是bool,那么可以这样做:return((bool)m_show_flags);

 
Artyom Trishkin #:

m_show_flags 是什么类型?如果不是bool,则返回((bool)m_show_flags);

uint m_show_flags。如果我把它改为 bool,警告就会消失,但因为我不确定这样做会不会损坏链中的某个函数,所以我会按照您的建议去做。谢谢。

 
Nauris Zukas #:

uint m_show_flags。如果我把它改成 bool,警告就会消失,但因为我不确定这样做会不会损坏链中的某个函数,所以我会按照你的建议去做。谢谢。

你不能把它改为bool ,因为它是一组标志。因此,变量的值可以大于 1。如果其值等于零,则等于bool 类型变量的 false 值。因此,当返回bool 类型的结果转换为bool 类型时,变量中除 0 之外的任何值都将产生true 值。相应地,只有 0 才会产生假值

由于该方法(从其名称来看)返回的是对象可见性的标志,因此在 0 以外的任何值上,该方法都将返回对象在某个时间段内可见的标志。只有当变量值为零时,我们才能确定该对象在所有时间段都是隐藏的。

我可能搞错了这个方法的目的。但我是根据这组标志来推测的:

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Видимость объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

顺便说一下,根据上述内容,你可以这样编写方法:

bool ShowFlags(void) const { return m_show_flags!=OBJ_NO_PERIODS; }

这样就不必将非布尔变量的返回类型转换为布尔类型 的值--反正检查的结果也是返回布尔值。

但这是你的选择,没有什么区别。

 
Artyom Trishkin bool 类型 的值了--反正它返回的是检查结果,也就是 bool。

但这是你的选择,没有什么区别。

Artem,在我看来,最好将函数类型改为 uint。

uint ShowFlags(void) const { return m_show_flags; }

这样您就可以通过从该函数接收到的值来检查对象在特定 TF 上的可见性。毕竟,这不是一个具体的值,而是一组标志...

 
Alexey Viktorov #:

Artem,我认为最好将函数类型改为 uint

这样就可以通过从该函数接收到的值来检查对象在特定 TF 上的可见性。毕竟,这不是一个具体的值,而是一组标志...

我们不知道这个方法的含义。很有可能是一个标志--可见/不可见。而从结果中伪造必要的标志则会使库用户的生活变得复杂。

 
Artyom Trishkin #:

我们不知道这种方法的含义。很可能是一个标志--可见/不可见。从结果中伪造必要的标志会使图书馆用户的生活更加复杂。

如果我是初学者,想知道对象在 TF H1 的图表上是否可见,而使用该方法得到的结果是对象在 TF M15 上可见,分别为真,但我在图表上却看不到......那该怎么办呢?

也许添加一个传入参数并检查指定 TF 上的可见性会更好。或者用其他方法,但我不太清楚....。

 
Alexey Viktorov #:

如果我是初学者,想知道在 TF H1 的图表上是否可以看到该对象,而使用这种方法可以得到在 TF M15 上可以看到该对象,分别为真,但我在图表上看不到......那该怎么办?

也许添加一个传入参数并检查指定 TF 上的可见性会更好。或者用其他方法,但我不太清楚....。

所以你应该问问阿纳托利。或者读读这篇文章,里面会写明讨论中的方法是用来做什么的,以及哪种方法能满足你描述的需求。

对话是关于一个特定的方法以及为什么编译器会产生警告。为什么--这很清楚(类型错误),以及如何解决--我向你展示了两个选项。