dongdong的问题我倒可以解决。你应该是指结点图标的背景色与TREEVIEW的背景色不一致。我想你每个结点的图标应该放在一个IMAGELIST中,假设你要把TREEVIEW的背景色改为红色,那么试试如下的语句: Set Imagelist1.backcolor=RGB(255,0,0) SendMessage(TreeView1.hWnd,TVM_SETBKCOLOR,0, ByVal RGB(255,0,0)) 这样就应该不会有问题了。
我可以回答你的问题,请看你的email,如解决了请加分,这下你爽了吧。
这是一段“改变TreeView背景色”的代码: Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (Byval hWnd As Long, Byval wMsg As Long, Byval wParam As Long, lParam As Long) As Long Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (Byval hWnd As Long, Byval nIndex As Long) As Long Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (Byval hWnd As Long, Byval nIndex As Long, Byval dwNewLong As Long) As Long Private Const GWL_STYLE = -16& Private Const TVM_SETBKCOLOR = 4381& Private Const TVM_GETBKCOLOR = 4383& Private Const TVS_HASLINES = 2& Dim frmlastForm As Form Private Sub Form_Load() Dim nodX As Node Set nodX = TreeView1.Nodes.Add(, , "R", "Root") Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "Child 1") Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C2", "Child 2") Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C3", "Child 3") Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C4", "Child 4") nodX.EnsureVisible TreeView1.Style = tvwTreelinesText ' Style 4. TreeView1.BorderStyle = vbFixedSingle End Sub Private Sub Command1_Click() Dim lngStyle As Long Call SendMessage(TreeView1.hWnd, TVM_SETBKCOLOR, 0, Byval RGB(255, 0, 0)) '改变背景到红色 lngStyle = GetWindowLong(TreeView1.hWnd, GWL_STYLE) Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle - TVS_HASLINES) Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle) End Sub
to shines 答案收到,很好!先给20分,因为还有个问题,为什么在VB6IDE环境下运行看不到效果,而必须编译成EXE文件再运行才能看到效果,若帮忙解决了这个问题,分数全部送上!
shines大侠,我也需要你的帮助。可以mail一份给我吗?
to alphafox: 主要是我用的是VB5.0的控件,我帮你改一下,寄给你,试试。to vbfans: 你能给我分吗?
to alphafox: “为什么在VB6IDE环境下运行看不到效果”答案我知道,我回答能给我一些分吗?
Set Imagelist1.backcolor=RGB(255,0,0)
SendMessage(TreeView1.hWnd,TVM_SETBKCOLOR,0, ByVal RGB(255,0,0))
这样就应该不会有问题了。
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (Byval hWnd As Long, Byval nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (Byval hWnd As Long, Byval nIndex As Long, Byval dwNewLong As Long) As Long
Private Const GWL_STYLE = -16&
Private Const TVM_SETBKCOLOR = 4381&
Private Const TVM_GETBKCOLOR = 4383&
Private Const TVS_HASLINES = 2&
Dim frmlastForm As Form
Private Sub Form_Load()
Dim nodX As Node
Set nodX = TreeView1.Nodes.Add(, , "R", "Root")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "Child 1")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C2", "Child 2")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C3", "Child 3")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C4", "Child 4")
nodX.EnsureVisible
TreeView1.Style = tvwTreelinesText ' Style 4.
TreeView1.BorderStyle = vbFixedSingle
End Sub
Private Sub Command1_Click()
Dim lngStyle As Long
Call SendMessage(TreeView1.hWnd, TVM_SETBKCOLOR, 0, Byval RGB(255, 0, 0))
'改变背景到红色
lngStyle = GetWindowLong(TreeView1.hWnd, GWL_STYLE)
Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle - TVS_HASLINES)
Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle)
End Sub
答案收到,很好!先给20分,因为还有个问题,为什么在VB6IDE环境下运行看不到效果,而必须编译成EXE文件再运行才能看到效果,若帮忙解决了这个问题,分数全部送上!
主要是我用的是VB5.0的控件,我帮你改一下,寄给你,试试。to vbfans:
你能给我分吗?
“为什么在VB6IDE环境下运行看不到效果”答案我知道,我回答能给我一些分吗?
一定给你高分!我上次不是给你50分了吗?这次也决不誓言!
先谢了。
东西收到,但还是看不到效果。没关系再说吧,谢谢你的方案,我要给分了。(我周末不上网,让你久等了,不好意思:)
能给我Email一份吗?
[email protected]
能给我Email一份吗?
[email protected]
我是新手,现只能给20分不好意思。
hhxz770(风灵)