现在要做一个表格,选择每一行的时候,每一行的每个列都要变成可修改的text框,所以text框要固定在每列的位置上.如果拉动listview的滚动条,就无法将这些text控件固定在列上面了,因为无法判断滚动条滚动多少值,请问如何获取listview的滚动条滚动值?

解决方案 »

  1.   

    ListView的滚动条滚动时,会触发WM_HSCROLL、WM_VSCROLL消息发送LVM_GETITEMPOSITION、LVM_GETITEMRECT消息可以得到ListView中项目的位置、区域
      

  2.   

    //请问如何获取listview的滚动条滚动值?Option ExplicitConst SBS_HORZ = 0
    Const SBS_VERT = 1
    Private Const SIF_RANGE = &H1
    Private Const SIF_PAGE = &H2
    Private Const SIF_POS = &H4
    Private Const SIF_DISABLENOSCROLL = &H8
    Private Const SIF_TRACKPOS = &H10
    Private Const SIF_ALL = (SIF_RANGE Or SIF_PAGE Or SIF_POS Or SIF_TRACKPOS)Private Type SCROLLINFO
        cbSize As Long
        fMask As Long
        nMin As Long
        nMax As Long
        nPage As Long
        nPos As Long
        nTrackPos As Long
    End Type
    Private Declare Function GetScrollInfo Lib "user32" (ByVal hWnd As Long, ByVal n As Long, lpScrollInfo As SCROLLINFO) As Long
    Private Sub Command1_Click()
        Dim SInfo As SCROLLINFO
        SInfo.cbSize = LenB(SInfo)
        SInfo.fMask = SIF_ALL
        Call GetScrollInfo(listview1.hWnd, SBS_VERT, SInfo)
        Debug.Print SInfo.nPos
    End Sub这样就可以获取listview的滚动条滚动值了,不过你要在程序中进行子类处理或者处理消息队列,这样才能及时的获得滚动条的信息