在VB6树视图中创建一个节点斜体

时间:2011-02-14 23:26:26

标签: vb6 treeview italic

我希望能够以树视图斜体在单个节点上创建文本。这听起来很简单,但我无法弄清楚如何。节点上没有允许它的属性。我可以使它变粗或改变颜色或设置背景颜色但不能使它变成斜体。有谁知道怎么做?

2 个答案:

答案 0 :(得分:3)

你说得对,听起来很简单。然而,可悲的是,实际上并不是那么简单。 VB6中的树视图控件是公共控件树视图的包装,但它不会暴露控件的大部分功能。您可以通过子类化控件并将项目绘制事件作为所有者绘制来执行您想要的操作。我没有方便的VB6 IDE设置,但这里有几个很好的资源供您查看:

Brad Martinez关于VB6 Hardcore技巧的网站:
 http://btmtz.mvps.org/treeview/

和我个人的最爱:
Steve McMahon的VBAccerator网站
http://www.vbaccelerator.com/home/VB/Code/Controls/TreeView/TreeView_Control/article.asp有一个非常好的自定义控件实现,您可以直接进入项目,源代码和所有。

这两个网站与Karl Peterson的网站一起是VB6开发不可或缺的: http://vb.mvps.org/

祝你好运!

答案 1 :(得分:1)

没有简单的方法可以做到这一点。基本上你必须:

  • 使用Microsoft Windows Common Controls 5.0(SP2)中的TreeView控件
  • 子类控件的hWnd
  • OCM_NOTIFY消息检查NM_CUSTOMDRAW
    • 在舞台CDDS_PREPAINT上返回CDRF_NOTIFYITEMDRAW
    • 在舞台CDDS_ITEMPREPAINT上选择已通过hDC的自定义字体并返回CDRF_NEWFONT

从树视图节点获取hItem也没有简单的方法。我正在使用这种hackish方式:

Private Function pvGetHItem(oNode As ComctlLib.Node) As Long
    Call CopyMemory(pvGetHItem, ByVal ObjPtr(oNode) + 68, 4)
End Function