文章 "DoEasy. 控件 (第 32 部分): 水平滚动条,鼠标轮滚动"

 

新文章 DoEasy. 控件 (第 32 部分): 水平滚动条,鼠标轮滚动已发布:

在本文中,我们将完成水平滚动条对象功能的开发。我们还将令移动滚动条滑块和旋转鼠标滚轮来滚动容器的内容成为可能,以及考虑到 MQL5 中的新订单执行策略,和新的运行时错误代码,在函数库里相应添加。

为了执行测试,我将使用来自上一篇文章中的 EA,且不做任何修改。我们编译它,并在图表运行它,“自动调整容器大小以便适应其内容”标志设置为“否”:



我们检查一下所创建水平滚动条功能所有组件的操作:


一切都按计划工作。

作者:Artyom Trishkin

 
Artem,图书馆怎么样了,会进一步发展吗?我认为,我们需要进一步挖掘。例如,阿纳托利已经停止公开支持他的图书馆,原因众所周知 ((
 
Denis Kirichenko #:
Artem,图书馆怎么样了,会进一步发展吗?我认为,我们需要进一步挖掘。例如,阿纳托利已经停止公开支持他的书目,原因众所周知((

当然会的。我暂停了出版工作。有一个视觉错误让人很不舒服--裁剪过的区域有时在绘制时会闪烁。在某些地方,图形会不必要地过早重绘。我还没有找到这个问题的症结所在--这其中有很多相互关联的地方--你治好了一件事,另一件事就会瘫痪....。

一旦找到,我就会修复并继续。

 
Artyom Trishkin #:

是的,当然会。我休息了一会儿,没再发帖。有一个视觉错误让人很不舒服--裁剪过的区域有时在绘制时会闪烁。在某个地方,图形会出现不必要的过早重绘。我还没有找到问题所在--有很多相互关联的地方--你治好了一件事,另一件事就会瘫痪....。

一旦找到,我就会修复并继续。

我也遇到过这个问题,我是这样解决的:

class CCanvas_my:public CCanvas
  {
public:
   bool              Resize(const int width,const int height);
  };

bool CCanvas_my::Resize(const int width,const int height)
  {
   if(m_rcname!=NULL && width>0 && height>0)
      if(ArrayResize(m_pixels,width*height)>0)
        {
         m_width =width;
         m_height=height;
        }
   return true;
  }

替换调整画布大小的标准功能。如果代码一切正常,就不会出现不必要的重绘。

在我的图形界面中,使用了 10 个 CCanvas 对象(继承者):


 
Aliaksandr Hryshyn #:

我也遇到过这个问题,是这样解决的:

替换调整画布大小的标准功能。如果代码一切正常,就不会出现不必要的重绘。

我有这样一个图形界面,使用了 10 个 CCanvas 对象(继承者):


谢谢。我的问题不在于调整大小。这是我的方法中的一个错误。