【问题标题】:Setting treeview background color in VB6 has a flaw - help?在 VB6 中设置树视图背景颜色有一个缺陷 - 帮助?
【发布时间】:2011-02-12 22:04:56
【问题描述】:

我已经成功实现了这种在VB 6中使用Win32 API设置树视图背景颜色的方法:http://support.microsoft.com/kb/178491

但是,出了点问题:当您将树节点扩展到两层以上时,内部加号[+] 和减号@987654323 左侧(有时在下面)的区域@ 符号仍然是白色的

有谁也知道如何使该区域具有正确的背景颜色?

注意:我还设置了每个节点的背景色,以及树视图图像列表的背景色。

这是我的代码版本:

Public Sub TreeView_SetBackgroundColor(TreeView As MSComctlLib.TreeView, BackgroundColor As Long) Dim lStyle As Long,节点为 MSComctlLib.Node 对于 TreeView.Nodes 中的每个节点 Node.BackColor = 背景颜色 下一个 TreeView.ImageList.BackColor = 背景颜色 调用 SendMessage(_ 树视图.hwnd,_ TVM_SETBKCOLOR, _ 0, _ ByVal 背景颜色) '现在重新设置样式,使树线正确显示。 lStyle = GetWindowLong(TreeView.hwnd, GWL_STYLE) 调用 SetWindowLong(TreeView.hwnd, GWL_STYLE, lStyle - TVS_HASLINES) 调用 SetWindowLong(TreeView.hwnd, GWL_STYLE, lStyle) 结束子

【问题讨论】:

  • 尝试在 TreeView_Expand(Node) 事件上运行上述函数,但这似乎没有任何效果。
  • 一个不受欢迎的解决方案是设置 TreeView.Style = tvwPictureText。这使得白框消失了,加号/减号和虚线也消失了。所以除了双击它们之外,没有办法展开/折叠树视图项目。

标签: winapi vb6 treeview


【解决方案1】:

这是通用控件 (mscomctl.ocx) 版本 6 中的一个已知错误。您正在使用的 API 例程适用于版本 5 的通用控件 (comctl32.dll)。原因是因为 mscomctl.ocx 实际上是对 Windows 中包含的常用控件的重写,因此 Windows 常用控件 API 和主题存在一些已知错误。 (请参阅本文的介绍:http://vbnet.mvps.org/index.html?code/comctl/tveffects.htm 以获得更有说服力的解释)。

我之前已经搜索过此问题的解决方案,但我想出的唯一方法(除了您已经发现的解决方法)是将项目中的控件替换为版本 5。请记住,此控件包还包括 ListView 和 ImageList,因此您需要在项目中也将它们替换为版本 5。

或者,您也可以尝试将本机控件替换为来自第三方的控件,以添加更多功能。虽然我没有亲自尝试过,但您可以尝试以下示例:http://www.vbaccelerator.com/home/vb/code/controls/TreeView/TreeView_Control/article.asp

【讨论】:

  • 感谢您的建议。仅供参考,就我而言,上述方法就足够了。
【解决方案2】:

好的,我找到了一个足够好的解决方案,将TreeView.Style 属性设置为tvwPlusPictureText。这是对我之前的评论(我将其设置为tvwPictureText)的改进,因为我仍然可以展开/折叠节点。

所以,请考虑这个问题仍然悬而未决,如果有更好的解决方案,请告诉我。

【讨论】:

    【解决方案3】:

    供参考(我自己没有尝试过这个)。似乎是一种更底层的子类化方法:

    http://www.bigresource.com/Tracker/Track-vb-h0tV8eVC8M/(见 Iouri 的评论)

    【讨论】:

      猜你喜欢
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 2023-03-25
      • 2021-03-11
      • 2011-01-11
      • 1970-01-01
      • 2017-11-17
      相关资源
      最近更新 更多