请问怎样将listview的滚动条变成平面的

解决方案 »

  1.   

    论坛里有这样的代码
    8过很多影响速度而且有bug
    不值得
      

  2.   

    ListView1.FlatScrollBar = True
    用 MS Common Control 6.0
      

  3.   

    设其exstyle 为 LVS_EX_FLATSB
      

  4.   

    Public Function ListViewStyle(ListView As Control, Optional ByVal HDS_But As Boolean = False)
    Dim styleTmp As Long, lngStyle As Long
    If HDS_But = True Then
        lngStyle = SendMessage(ListView.hWnd, LVM_GETHEADER, 0, ByVal 0&)
        styleTmp = GetWindowLong(lngStyle, GWL_STYLE)
        SetWindowLong lngStyle, GWL_STYLE, styleTmp Xor HDS_BUTTONS   '平头
    End If
    lngStyle = LVS_EX_GRIDLINES Xor LVS_EX_FULLROWSELECT Xor LVS_EX_CHECKBOXES Xor LVS_EX_FLATSB Xor LVS_EX_HEADERDRAGDROP
    styleTmp = SendMessageLong(ListView.hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0&, lngStyle)  '有表格
    End Function
    '加LVS_EX_FLATSB 为平面滚动条
    可是我都还在找treeview的平面滚动条呀,请问treeview能不能从3D变成平面的滚动条呀,
      

  5.   

    ListView1.FlatScrollBar = True
      

  6.   

    Micrsoft Windows Common Controls6.0(SP4)
    里面的ListView
      

  7.   

    用Micrsoft Windows Common Controls65.0
      

  8.   

    Option ExplicitDeclare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
    Public Const WS_EX_LAYERED = &H80000
    Public Const LWA_ALPHA = &H2
    Public Const LWA_COLORKEY = &H1
    '上面为明Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As LongDeclare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
    Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal CX As Long, ByVal CY As Long, ByVal wFlags As Long) As Long
    Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type Type TOOLINFO
        cbSize As Long
        uFlags As Long
        hwnd As Long
        uid As Long
        RECT As RECT
        hinst As Long
        lpszText As String
        lParam As Long
    End TypePublic Const CW_USEDEFAULT = &H80000000
    Public Const SWP_NOMOVE = &H2
    Public Const SWP_NOACTIVATE = &H10
    Public Const SWP_NOSIZE = &H1
    Public Const HWND_TOPMOST = -1
    Public Const WM_USER = &H400
    Public Const TTF_CENTERTIP = &H2
    Public Const TTF_SUBCLASS = &H10
    Public Const TTM_ADDTOOLA = (WM_USER + 4)
    Public Const TTM_GETTEXTA = (WM_USER + 11)
    Public Const TTM_SETMAXTIPWIDTH = (WM_USER + 24)
    Public Const TTM_SETTIPBKCOLOR = (WM_USER + 19)
    Public Const TTM_SETTIPTEXTCOLOR = (WM_USER + 20)
    Public Const TTM_UPDATETIPTEXTA = (WM_USER + 12)
    Public Const TTS_ALWAYSTIP = &H1
    Public Const TTS_BALLOON = &H40
    Public Const TTS_NOPREFIX = &H2
    Public Const TTM_SETTITLE = (WM_USER + 32)
    Public Const TTM_SETDELAYTIME = (WM_USER + 3)
    Public Const TTDT_AUTOPOP = 2
    Public Const TTDT_INITIAL = 3
    Public Const TTF_IDISHWND = &H1
    Public Const TOOLTIPS_CLASSA = "tooltips_class32"Type POINTAPI
        x As Long
        y As Long
    End TypeType LVHITTESTINFO
       pt As POINTAPI
       flags As Long
       iItem As Long
       iSubItem As Long
    End TypePublic TipWindow As Long'------------------上面为ToolTip
    Public Enum GWL_nIndex
      GWL_WNDPROC = (-4)
    ' GWL_HWNDPARENT = (-8)
      GWL_ID = (-12)
    ' GWL_STYLE = (-16)
      GWL_EXSTYLE = (-20)
    ' GWL_USERDATA = (-21)
    End EnumPublic Type LVITEM
       mask         As Long
       iItem        As Long
       iSubItem     As Long
       state        As Long
       stateMask    As Long
       pszText      As String
       cchTextMax   As Long
       'iImage       As Long
       'lParam       As Long
       'iIndent      As Long
    End TypeDeclare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As GWL_nIndex) As Long
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As GWL_nIndex, ByVal dwNewLong As Long) As Long
    Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" _
       (ByVal hwnd As Long, _
        ByVal Msg As Long, _
        ByVal wParam As Long, _
        ByVal lParam As Long) As LongDeclare Function SendMessageAny Lib "user32" _
       Alias "SendMessageA" _
      (ByVal hwnd As Long, _
      ByVal wMsg As Long, _
      ByVal wParam As Long, _
       lParam As Any) As LongPublic Const TVM_SETBKCOLOR = 4381&
    Public Const TVM_GETBKCOLOR = 4383&
    Public Const TVS_HASLINES = 2&Public Const GWL_STYLE = (-16&)
    Public Const LVM_FIRST = &H1000
    Public Const LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54
    Public Const LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55
    Public Const LVM_SETIMAGELIST = (LVM_FIRST + 3)
    Public Const LVM_GETITEMCOUNT = (LVM_FIRST + 4)
    Public Const LVM_GETITEM = (LVM_FIRST + 5)
    Public Const LVM_SETITEM = (LVM_FIRST + 6)Public Const LVS_EX_FULLROWSELECT = &H20
    Public Const LVS_EX_GRIDLINES = &H1
    Public Const LVS_EX_CHECKBOXES As Long = &H4
    Public Const LVS_EX_HEADERDRAGDROP = &H10
    Public Const LVS_EX_TRACKSELECT = &H8
    Public Const LVS_EX_ONECLICKACTIVATE = &H40
    Public Const LVS_EX_TWOCLICKACTIVATE = &H80
    Public Const LVS_EX_SUBITEMIMAGES = &H2
    Public Const LVM_SETCOLUMNWIDTH = (LVM_FIRST + 30)
    Public Const LVSCW_AUTOSIZE_USEHEADER As Long = -2
    Public Const LVSCW_AUTOSIZE As Long = -1
    Public Const LVS_EX_FLATSB = &H100Public Const LVIF_STATE = &H8
     
    Public Const LVM_SETITEMSTATE = (LVM_FIRST + 43)
    Public Const LVM_GETITEMSTATE As Long = (LVM_FIRST + 44)
    Public Const LVM_GETITEMTEXT As Long = (LVM_FIRST + 45)Public Const LVIS_STATEIMAGEMASK As Long = &HF000Public Const LVS_FULLROWSELECT = &H20
    Public Const LVM_GETHEADER = (LVM_FIRST + 31)
    Public Const HDS_BUTTONS = &H2
    Public Const LVM_HITTEST = LVM_FIRST + 18
    Public Const LVM_DELETEALLITEMS = &H1009Public Function ListViewStyle(ListView As Control, Optional ByVal HDS_But As Boolean = False)
    Dim styleTmp As Long, lngStyle As Long
    If HDS_But = True Then
        lngStyle = SendMessage(ListView.hwnd, LVM_GETHEADER, 0, ByVal 0&)
        styleTmp = GetWindowLong(lngStyle, GWL_STYLE)
        SetWindowLong lngStyle, GWL_STYLE, styleTmp Xor HDS_BUTTONS   '平头
    End If
    lngStyle = LVS_EX_GRIDLINES Xor LVS_EX_FULLROWSELECT Xor LVS_EX_CHECKBOXES Xor LVS_EX_FLATSB Xor LVS_EX_HEADERDRAGDROP
    styleTmp = SendMessageLong(ListView.hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0&, lngStyle)  '有表格
    End Function调用时call ListViewStyle(ListView1, True)