2

我希望能够使树视图中各个节点上的文本斜体。这听起来很简单,但我一直无法找出方法。节点上没有允许它的属性。我可以将其设为粗体或更改颜色或设置背景颜色,但不能将其设为斜体。有谁知道如何做到这一点?

4

2 回答 2

2

你是对的,这听起来很简单。然而,可悲的是,在现实中做到这一点并不那么简单。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,它有一个非常好的自定义控件实现,您可以直接将其放入您的项目中,源代码和所有。

这两个网站是 VB6 开发必不可少的,还有 Karl Peterson 的网站:http: //vb.mvps.org/

祝你好运!

于 2011-02-15T00:20:21.407 回答
2

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

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

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

Private Function pvGetHItem(oNode As ComctlLib.Node) As Long
    Call CopyMemory(pvGetHItem, ByVal ObjPtr(oNode) + 68, 4)
End Function
于 2011-02-15T09:23:18.230 回答