请教大家我把TreeView的背景颜色改变了,但是那节点的颜色怎么办?

解决方案 »

  1.   

    '******   Project1.vbp   **************   
      Type=Exe   
      Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\SYSTEM\stdole2.tlb#OLE   Automation   
      Form=frmMain.frm   
      Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0;   MSCOMCTL.OCX   
      Module=modAPI;   modAPI.bas   
      Startup="frmMain"   
      Command32=""   
      Name="Project1"   
      HelpContextID="0"   
      CompatibleMode="0"   
      MajorVer=1   
      MinorVer=0   
      RevisionVer=0   
      AutoIncrementVer=0   
      ServerSupportFiles=0   
      VersionCompanyName="None"   
      CompilationType=0   
      OptimizationType=0   
      FavorPentiumPro(tm)=0   
      CodeViewDebugInfo=0   
      NoAliasing=0   
      BoundsCheck=0   
      OverflowCheck=0   
      FlPointCheck=0   
      FDIVCheck=0   
      UnroundedFP=0   
      StartMode=0   
      Unattended=0   
      ThreadPerObject=0   
      MaxNumberOfThreads=1   
      '*************************   
      

  2.   

    '**********   frmMain.frm   ************   
      VERSION   5.00   
      Object   =   "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0";   "MSCOMCTL.OCX"   
      Begin   VB.Form   frmMain     
            Caption                   =       "Form1"   
            ClientHeight         =       5460   
            ClientLeft             =       60   
            ClientTop               =       345   
            ClientWidth           =       6780   
            LinkTopic               =       "Form1"   
            ScaleHeight           =       5460   
            ScaleWidth             =       6780   
            StartUpPosition   =       3     'Windows   Default   
            Begin   VB.CommandButton   cmdAddNode     
                  Caption                   =       "cmdAddNode"   
                  Height                     =       480   
                  Left                         =       2280   
                  TabIndex                 =       2   
                  Top                           =       4815   
                  Width                       =       2160   
            End   
            Begin   MSComctlLib.TreeView   TV1     
                  CausesValidation=       0       'False   
                  Height                     =       4035   
                  Left                         =       15   
                  TabIndex                 =       0   
                  Top                           =       -15   
                  Width                       =       6735   
                  _ExtentX                 =       11880   
                  _ExtentY                 =       7117   
                  _Version                 =       393217   
                  Indentation           =       441   
                  LabelEdit               =       1   
                  Style                       =       7   
                  BorderStyle           =       1   
                  Appearance             =       1   
            End   
            Begin   VB.Label   Label1     
                  Caption                   =       $"frmMain.frx":0000   
                  Height                     =       570   
                  Left                         =       90   
                  TabIndex                 =       1   
                  Top                           =       4080   
                  Width                       =       6540   
            End   
      End   
      Attribute   VB_Name   =   "frmMain"   
      Attribute   VB_GlobalNameSpace   =   False   
      Attribute   VB_Creatable   =   False   
      Attribute   VB_PredeclaredId   =   True   
      Attribute   VB_Exposed   =   False   
      Option   Explicit   
              Private   Const   TV_FIRST   =   &H1100   
              Private   Const   TVM_SETINSERTMARKCOLOR   =   (TV_FIRST   +   37)   
              Private   Const   TVM_GETINSERTMARKCOLOR   =   (TV_FIRST   +   38)   
              Private   Const   GWL_STYLE   =   -16&   
              Private   Const   TVM_SETBKCOLOR   =   4381&   
              Private   Const   TVM_GETBKCOLOR   =   4383&   
              Private   Const   TVS_HASLINES   =   2&   
        
              Dim   lngBackColor   As   Long   '   desired   backgroundcolor   (light   yellow)   
              Dim   TmpNode   As   Node   '   used   for   adding   nodes   
        
      Private   Sub   Form_Load()   
        
                      lngBackColor   =   &HE0F8FE   '   light   yellow   color   like   the   tooltip   
        
                      Call   SendMessage(TV1.hWnd,   _   
                                                        TVM_SETBKCOLOR,   _   
                                                        0,   _   
                                                        ByVal   lngBackColor)     'Change   the   background   color   
                                                                                              
                      Call   SendMessage(TV1.hWnd,   _   
                                                        TVM_SETINSERTMARKCOLOR,   _   
                                                        0,   _   
                                                        ByVal   lngBackColor)     'Change   ?????   
                                                                                                                  
        
                  '   Now   reset   the   style   so   that   the   tree   lines   appear   properly   
                  '   ->   according   to   MSDN   and   others   
                      Dim   lngstyle   As   Long   
                      lngstyle   =   GetWindowLong(TV1.hWnd,   GWL_STYLE)   
                        
                      Call   SetWindowLong(TV1.hWnd,   _   
                                                            GWL_STYLE,   _   
                                                            lngstyle   -   TVS_HASLINES)   
                        
                      Call   SetWindowLong(TV1.hWnd,   GWL_STYLE,   lngstyle)   
        
                        
                      '   Populate   the   treeview   with   root   and   two   nodes   
                      With   TV1   
                              .Nodes.Clear   
                              '   add   root   node   
                              Set   TmpNode   =   .Nodes.Add(,   ,   "root",   "My   Treeview")   
                              TmpNode.BackColor   =   lngBackColor   
                              '   add   first   childnode   
                              Set   TmpNode   =   .Nodes.Add("root",   tvwChild,   "id1",   "Line   1")   
                              TmpNode.BackColor   =   lngBackColor   
                              '   add   second   childnode   
                              Set   TmpNode   =   .Nodes.Add("root",   tvwChild,   "id2",   "Line   2")   
                              TmpNode.BackColor   =   lngBackColor   
                              '   collapse   tree   
                              .Nodes(1).Selected   =   True   
                              .Nodes(2).EnsureVisible   
                        
                      End   With   
        
      End   Sub   
        
      Private   Sub   cmdAddNode_Click()   
        
              '   add   two   nodes   to   the   treeview   
              Dim   TmpNode   As   Node   
              Set   TmpNode   =   TV1.Nodes.Add("id1",   tvwChild,   "id"   &   TV1.Nodes.Count   +   1,   "Line   "   &   TV1.Nodes.Count)   
              TmpNode.BackColor   =   lngBackColor   
              TmpNode.EnsureVisible   
              Set   TmpNode   =   TV1.Nodes.Add("id2",   tvwChild,   "id"   &   TV1.Nodes.Count   +   1,   "Line   "   &   TV1.Nodes.Count)   
              TmpNode.BackColor   =   lngBackColor   
              TmpNode.EnsureVisible   
                
      End   Sub   
      '**********************   
      

  3.   

    '*********   modAPI.bas   **********   
      Attribute   VB_Name   =   "modAPI"   
        
        
      Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (ByVal   hWnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   lParam   As   Any)   As   Long   
        
      Public   Declare   Function   GetWindowLong   Lib   "user32"   Alias   "GetWindowLongA"   (ByVal   hWnd   As   Long,   ByVal   nIndex   As   Long)   As   Long   
        
      Public   Declare   Function   SetWindowLong   Lib   "user32"   Alias   "SetWindowLongA"   (ByVal   hWnd   As   Long,   ByVal   nIndex   As   Long,   ByVal   dwNewLong   As   Long)   As   Long   
        
      Private   Declare   Function   SetBkColor   Lib   "gdi32"   (ByVal   hdc   As   Long,   ByVal   crColor   As   Long)   As   Long