文章 "改进面板:增加透明化、改变背景色以及继承于 CAppDialog/CWndClient" - 页 2 12 新评论 Denis Kirichenko 2020.10.03 14:38 #11 弗拉基米尔,谢谢你的文章,非常有用的材料。我可能有一个比较简单的问题... 有一个CBmpButton 类型的对象--带有图像的按钮。因此,按钮图像本身就是这里的一个资源。如何访问它的属性?还是不可能? 文档中的一个例子。 我使用了 CControlsDialog::CreateBmpButton1() 方法: //+------------------------------------------------------------------+ //| 创建 "BmpButton1 "按钮| //+------------------------------------------------------------------+ bool CControlsDialog::CreateBmpButton1(void) { //--- 坐标 int x1 = INDENT_LEFT; int y1 = INDENT_TOP + (EDIT_HEIGHT + CONTROLS_GAP_Y); int x2 = x1 + BUTTON_WIDTH; int y2 = y1 + BUTTON_HEIGHT; //--- 创建 if(!m_bmpbutton1.Create(m_chart_id, m_name + "BmpButton1", m_subwin, x1, y1, x2, y2)) return(false); //--- 设置控件 CBmpButton 的 bmp 文件名称 string name1, name2; name1 = "\\Images\\euro.bmp"; name2 = "\\Images\\dollar.bmp"; m_bmpbutton1.BmpNames(name1, name2); if(!Add(m_bmpbutton1)) return(false); m_chart.Redraw(); if(ObjectFind(m_chart_id, name1) >= 0) { DebugBreak(); } //--- 成功 return(true); } //+------------------------------------------------------------------+ 使用 ObjectFind(),无法找到面板上的图像对象,这很正常。如果可能的话,如何找到它? 谢谢。 Vladimir Karputov 2020.10.03 14:59 #12 Denis Kirichenko:弗拉基米尔,谢谢你的文章,非常有用的材料。我可能有一个更低级的问题.....有一个CBmpButton 类型的对象--带有图像的按钮。因此,按钮图像本身就是这里的资源。如何访问它的属性?还是不能?文档中的示例。我在那里使用了 CControlsDialog::CreateBmpButton1() 方法:使用 ObjectFind(),无法在面板上找到图像对象,这很正常。如果可能的话,如何找到它?谢谢。 图像(绘图)不是对象。对象是线条、矩形...图形元素。 Mihail Matkovskij 2021.09.12 08:27 #13 你好,弗拉基米尔。您在窗口中添加了一个额外的 ClientArea。然后您使用 CMyWndClient::ShiftButton 方法来滚动按钮。这不是很方便,因为窗口中可能有很多按钮。此外,除了按钮之外,还可能有很多 UI 元素。因此,为每个元素编写方法并在滚动处理程序中不忘记调用它们是一项挑战。滚动ClientArea 不是更简单吗?这样,其中包含的所有用户界面元素都会自动滚动。只需在处理程序中 指定ClientArea 滚动即可。 Vladimir Karputov 2021.09.12 08:33 #14 Mihail Matkovskij #:你好,弗拉基米尔。您在窗口中添加了一个额外的 ClientArea。然后您使用 CMyWndClient::ShiftButton 方法来滚动按钮。这不是很方便,因为窗口中可能有很多按钮。此外,除了按钮之外,还可能有很多 UI 元素。因此,为每个元素编写方法并在滚动处理程序中不忘记调用它们是一项挑战。滚动ClientArea 不是更简单吗?这样,其中包含的所有用户界面元素都会自动滚动。只需在处理程序中 指定ClientArea 滚动即可。 请写一个这样的例子。我想大家都会对这样的实现感兴趣。 Mihail Matkovskij 2021.09.12 09:52 #15 Vladimir Karputov #:请写一个这样的例子。我想每个人都会对这样的实现感兴趣。 经过一番思考,我想明白了。无法实现这种滚动是因为无法部分隐藏任何图表对象(在本例中是ClientArea 和 按钮)。其他用户界面的实现方式有所不同。它们显示的是滚动区域 内的一个矩形区域,而其他一切都被隐藏起来。因此造成了混淆。 Bluechip113 2022.11.12 16:15 #16 完美 Juan Luis De Frutos Blanco 2025.10.20 15:08 #17 谢谢,弗拉基米尔,干得漂亮。 如何实现标题的透明度? 12 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
弗拉基米尔,谢谢你的文章,非常有用的材料。我可能有一个比较简单的问题...
有一个CBmpButton 类型的对象--带有图像的按钮。因此,按钮图像本身就是这里的一个资源。如何访问它的属性?还是不可能?
文档中的一个例子。
我使用了 CControlsDialog::CreateBmpButton1() 方法:
使用 ObjectFind(),无法找到面板上的图像对象,这很正常。如果可能的话,如何找到它?
谢谢。
弗拉基米尔,谢谢你的文章,非常有用的材料。我可能有一个更低级的问题.....
有一个CBmpButton 类型的对象--带有图像的按钮。因此,按钮图像本身就是这里的资源。如何访问它的属性?还是不能?
文档中的示例。
我在那里使用了 CControlsDialog::CreateBmpButton1() 方法:
使用 ObjectFind(),无法在面板上找到图像对象,这很正常。如果可能的话,如何找到它?
谢谢。
图像(绘图)不是对象。对象是线条、矩形...图形元素。
你好,弗拉基米尔。您在窗口中添加了一个额外的 ClientArea。然后您使用 CMyWndClient::ShiftButton 方法来滚动按钮。这不是很方便,因为窗口中可能有很多按钮。此外,除了按钮之外,还可能有很多 UI 元素。因此,为每个元素编写方法并在滚动处理程序中不忘记调用它们是一项挑战。滚动ClientArea 不是更简单吗?这样,其中包含的所有用户界面元素都会自动滚动。只需在处理程序中 指定ClientArea 滚动即可。
你好,弗拉基米尔。您在窗口中添加了一个额外的 ClientArea。然后您使用 CMyWndClient::ShiftButton 方法来滚动按钮。这不是很方便,因为窗口中可能有很多按钮。此外,除了按钮之外,还可能有很多 UI 元素。因此,为每个元素编写方法并在滚动处理程序中不忘记调用它们是一项挑战。滚动ClientArea 不是更简单吗?这样,其中包含的所有用户界面元素都会自动滚动。只需在处理程序中 指定ClientArea 滚动即可。
请写一个这样的例子。我想大家都会对这样的实现感兴趣。
请写一个这样的例子。我想每个人都会对这样的实现感兴趣。
经过一番思考,我想明白了。无法实现这种滚动是因为无法部分隐藏任何图表对象(在本例中是ClientArea 和 按钮)。其他用户界面的实现方式有所不同。它们显示的是滚动区域 内的一个矩形区域,而其他一切都被隐藏起来。因此造成了混淆。